none
iis+access database engineer 不明原因报错问题。 RRS feed

  • 问题

  • 我通过IIS建立了aspx的网站,应用程序池.NET v4.5。代码中会连接ACCESS数据库。网站刚刚添加好后能够正常运行,运行了一段时间后,所有连接数据库的页面均无法打开,表现为浏览器一直转啊转。其它不连接数据库的页面(也有服务器后台计算)不受影响。应用程序池回收后又好了,用一段时间又会崩。这个网站已经一年多了,最近没有动过代码,很奇怪。我在windows功能中卸载了IIS重新装还是没好。系统win server 2016。

    此错误发生都在时间查看器中能捕捉到Complus报错:

    日志名称:          Application

    来源:            Microsoft-Windows-Complus

    日期:            2020/2/16 16:01:42

    事件 ID:         4786

    任务类别:          (8)

    级别:            错误

    关键字:           经典

    用户:            暂缺

    计算机:           172_17_0_11

    描述:

    系统调用了一个自定义组件,此组件已失败并产生了一个异常。这说明自定义组件有问题。请通知此组件的开发人员并提供他们下列信息。

    组件进程 ID: SC.Pool 3 1

    方法名称: IDispenserDriver::CreateResource

    进程名称: w3wp.exe

    异常: 12c97d7

    地址: 0X00007FFC5B5F5AAD

    事件 Xml:

    <Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">

      <System>

        <Provider Name="Microsoft-Windows-Complus" Guid="{0f177893-4a9c-4709-b921-f432d67f43d5}" EventSourceName="COM+" />

        <EventID Qualifiers="49154">4786</EventID>

        <Version>0</Version>

        <Level>2</Level>

        <Task>8</Task>

        <Opcode>0</Opcode>

        <Keywords>0x80000000000000</Keywords>

        <TimeCreated SystemTime="2020-02-16T08:01:42.668410300Z" />

        <EventRecordID>36477</EventRecordID>

        <Correlation />

        <Execution ProcessID="0" ThreadID="0" />

        <Channel>Application</Channel>

        <Computer>172_17_0_11</Computer>

        <Security />

      </System>

      <EventData>

        <Data Name="param1">

    组件进程 ID: SC.Pool 3 1

    方法名称: IDispenserDriver::CreateResource

    进程名称: w3wp.exe

    异常: 12c97d7

    地址: 0X00007FFC5B5F5AAD</Data>

      </EventData>

    </Event>

    ========================================

    之后瞬间紧接着ASP.NET警告:

    日志名称:          Application

    来源:            ASP.NET 4.0.30319.0

    日期:            2020/2/16 16:01:42

    事件 ID:         1309

    任务类别:          Web Event

    级别:            警告

    关键字:           经典

    用户:            暂缺

    计算机:           172_17_0_11

    描述:

    Event code: 3005 

    Event message: An unhandled exception has occurred. 

    Event time: 2020/2/16 16:01:42 

    Event time (UTC): 2020/2/16 8:01:42 

    Event ID: feeec463bd074a52a5b9ca5a3c54491a 

    Event sequence: 6 

    Event occurrence: 1 

    Event detail code: 0 

    Application information: 

        Application domain: /LM/W3SVC/2/ROOT-5-132263137024964228 

        Trust level: Full 

        Application Virtual Path: / 

        Application Path: D:\web\www\ 

        Machine name: 172_17_0_11 

    Process information: 

        Process ID: 6008 

        Process name: w3wp.exe 

        Account name: IIS APPPOOL\.NET v4.5 

    Exception information: 

        Exception type: OleDbException 

        Exception message: 没有可用的错误消息,结果代码: E_UNEXPECTED(0x8000FFFF)。

       在 System.Data.OleDb.OleDbConnectionInternal..ctor(OleDbConnectionString constr, OleDbConnection connection)

       在 System.Data.OleDb.OleDbConnectionFactory.CreateConnection(DbConnectionOptions options, DbConnectionPoolKey poolKey, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningObject)

       在 System.Data.ProviderBase.DbConnectionFactory.CreateNonPooledConnection(DbConnection owningConnection, DbConnectionPoolGroup poolGroup, DbConnectionOptions userOptions)

       在 System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal oldConnection, DbConnectionInternal& connection)

       在 System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions)

       在 System.Data.ProviderBase.DbConnectionInternal.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory)

       在 System.Data.OleDb.OleDbConnection.Open()

       在 System.Web.UI.WebControls.SqlDataSourceView.ExecuteDbCommand(DbCommand command, DataSourceOperation operation)

       在 ASP.main_master.Page_Load()

       在 System.Web.UI.Control.OnLoad(EventArgs e)

       在 System.Web.UI.Control.LoadRecursive()

       在 System.Web.UI.Control.LoadRecursive()

       在 System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)


    Request information: 

        Request URL: https://shishuyang.cn:443/default.aspx 

        Request path: /default.aspx 

        User host address: 101.86.1.245 

        User:  

        Is authenticated: False 

        Authentication Type:  

        Thread account name: IIS APPPOOL\.NET v4.5 

    Thread information: 

        Thread ID: 8 

        Thread account name: IIS APPPOOL\.NET v4.5 

        Is impersonating: False 

        Stack trace:    在 System.Data.OleDb.OleDbConnectionInternal..ctor(OleDbConnectionString constr, OleDbConnection connection)

       在 System.Data.OleDb.OleDbConnectionFactory.CreateConnection(DbConnectionOptions options, DbConnectionPoolKey poolKey, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningObject)

       在 System.Data.ProviderBase.DbConnectionFactory.CreateNonPooledConnection(DbConnection owningConnection, DbConnectionPoolGroup poolGroup, DbConnectionOptions userOptions)

       在 System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal oldConnection, DbConnectionInternal& connection)

       在 System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions)

       在 System.Data.ProviderBase.DbConnectionInternal.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory)

       在 System.Data.OleDb.OleDbConnection.Open()

       在 System.Web.UI.WebControls.SqlDataSourceView.ExecuteDbCommand(DbCommand command, DataSourceOperation operation)

       在 ASP.main_master.Page_Load()

       在 System.Web.UI.Control.OnLoad(EventArgs e)

       在 System.Web.UI.Control.LoadRecursive()

       在 System.Web.UI.Control.LoadRecursive()

       在 System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)


    求助这是怎么回事啊!我最近没改过代码啊!!


    • 已编辑 施舒阳 2020年2月16日 8:53 补充信息
    • 已移动 ThankfulHeart 2020年2月16日 9:52 IIS相关问题
    2020年2月16日 8:48

全部回复

  • 你好,

    我建议你建一个新的程序池然后把这个项目移动到新的程序池试下。

    然后如果还没有解决这个问题,我建议你把你的web.config贴一下,然后和我们具体讲下你的Access数据库的版本以及你数据量。还有发生这个错误的时候你网站的流量


    MSDN Community Support
    Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.

    • 已建议为答案 jinglumocha 2020年2月18日 5:32
    • 取消建议作为答案 施舒阳 2020年2月18日 6:18
    2020年2月17日 5:20
  • 非常感谢你的回复!我各种应用程序池都试过了,经典集成也都试过了,新建一个也试过了,都会出现同样的问题。看错误似乎是IDispenserDriver::CreateResource操作失败,数据库连接才会紧接着出问题,此时其他操作(比如<%response.write(1+1)%>)可以执行。

    office 2019专业增强版正版激活,winserver是腾讯云的正版都没问题,database engineer是2016的。数据量很小,一共四张表,最大的一张11450行,每行ID,短文本,短文本,时间。应该不会有问题。根据域名解析的情况,昨天域名一共被解析225次,流量大概没啥问题……log里看似乎也没有通过IP地址访问的爬虫的明显异常流量。

    以下是web.config。

    <?xml version="1.0" encoding="UTF-8"?>
    <configuration>
      <system.web>
        <compilation targetFramework="4.5.2"></compilation>
        <sessionState timeout="600" />
        <customErrors mode="Off" />
        <httpRuntime maxRequestLength="20480" />
      </system.web>
      <system.webServer>
        <rewrite>
          <rules>
            <rule name="HTTP to HTTPS redirect" stopProcessing="true">
              <match url="(.*)" />
              <conditions>
                <add input="{HTTPS}" pattern="off" ignoreCase="true" />
              </conditions>
              <action type="Redirect" redirectType="Found" url="https://{HTTP_HOST}/{R:1}" />
            </rule>
          </rules>
        </rewrite>
      </system.webServer>
    </configuration>
    

    2020年2月17日 5:59
  • 你好,

    能贴下发现错误的代码片段吗?


    MSDN Community Support
    Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.

    2020年2月19日 3:59
  • 代码没报错,是w3wp.exe在事件查看器中检测到报错。

    通过浏览器打开后,似乎是一种假死的状态,没有报错信息。硬说报错就是

        Exception type: OleDbException 

        Exception message: 没有可用的错误消息,结果代码: E_UNEXPECTED(0x8000FFFF)。

    也是在事件查看器里看到的。

    2020年2月19日 4:38
  • 哦对了,在main.master中似乎是运行到 ads.insert()的时候执行不下去,把这一行删了就好了。但是有这一行,在debug=True的时候也不报错,感觉就是假死。

        Protected Sub Page_Load()
            Dim ads As New AccessDataSource
            ads.DataFile = "/App_Data/db.accdb"
            ads.InsertCommand = "INSERT INTO 访问记录 (IP地址,页面url,时间) VALUES (?,?,?)"
            ads.InsertParameters.Add("", Request.UserHostAddress)
            ads.InsertParameters.Add("", Request.RawUrl)
            ads.InsertParameters.Add("", Now().ToString())
            ads.Insert()
            ads.Dispose()
        End Sub


     
    2020年2月19日 4:43