ASP.NET应用程序重新启动没有明显的原因

时间:2017-03-20 08:08:20

标签: c# asp.net iis webforms

我知道这个问题已经提出了很多,但无论我尝试什么,它似乎都没有解决我的问题。

我的ASP.NET Web窗体应用程序在看似完全随机的时间间隔内保持重新启动,尽管它们通常在30到60分钟之间。我最近尝试在ServerState中运行应用程序而不是InProc,但这没有解决问题。

似乎没有抛出任何异常,并且当发生这种情况时,不会触发Global.aspx中的Error事件和Shutdown事件。而是突然触发Application_Start事件,并将所有内容重置为其初始状态。

我读到更改某些文件或更改关键目录中的文件会导致这种情况发生,但是当发生这种情况时检查每个文件的修改日期表明应用程序文件夹中没有一个文件被修改过。

我已经运行了ANTS内存分析器,看看是否有任何内存泄漏或其他与内存相关的问题可能会导致问题,但内存使用似乎完全稳定,并且永远不会达到任何戏剧性的水平。最多内存使用量约为200 MB,其中CLR和ANTS本身占用了一半。无论哪种方式,无论在特定时间内的内存使用水平如何,问题似乎都会发生。

我正在将应用程序部署到远程服务器。我无权访问服务器或任何IIS配置,因此我无法自己实际调整或监控任何内容,但我当然可以联系运行服务器的人员来帮助我这样做。当我在本地IIS Express和远程服务器上运行应用程序时,重新启动都会发生,但它似乎在远程服务器上更频繁地重新启动。

我已经在下面添加了Web.config文件的内容。它位于根目录中。

<configuration>
  <appSettings>
    <add key="ChartImageHandler" value="storage=file;timeout=20;url=~/VTT/Charts/;"/>
    <add key="aspnet:MaxHttpCollectionKeys" value="100000"/>
  </appSettings>
  <connectionStrings>
    <add name="DBConnString" providerName="System.Data.SqlClient"
      connectionString="Data Source=(localdb)\MSSQLLocalDB;Initial Catalog=DBC;Connection Timeout=120;Integrated Security=true;Trusted_Connection=true;"/>
  </connectionStrings>
  <system.web>
    <httpHandlers>
      <add path="ChartImg.axd" verb="GET,HEAD,POST" type="System.Web.UI.DataVisualization.Charting.ChartHttpHandler, System.Web.DataVisualization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
        validate="false" />
    </httpHandlers>
    <sessionState mode="StateServer" stateConnectionString="tcpip=localhost:42424" cookieless="false" timeout="60"></sessionState>
    <compilation debug="true" optimizeCompilations="false" targetFramework="4.5">
      <assemblies>
        <add assembly="System.Web.DataVisualization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
      </assemblies>
    </compilation>
    <customErrors mode="Off"></customErrors>
    <httpRuntime targetFramework="4.5.1" executionTimeout="3600" maxRequestLength="10240"/>
    <globalization culture="" uiCulture=""/>
    <authentication mode="Windows">
      <forms loginUrl="Default.aspx" defaultUrl="Default.aspx" name="adAuthCookie" timeout="60" path="/"/>
    </authentication>
    <authorization>
      <deny users="?"/>
      <allow users="*"/>
    </authorization>
    <pages maintainScrollPositionOnPostBack="true">
      <controls>
        <add tagPrefix="asp" namespace="System.Web.UI.DataVisualization.Charting"
          assembly="System.Web.DataVisualization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
      </controls>
    </pages>
  </system.web>
  <system.webServer>
    <defaultDocument enabled="true">
      <files>
        <clear />
        <add value="Default.aspx" />
      </files>
    </defaultDocument>
    <caching>
      <profiles>
        <add extension=".ico" policy="CacheUntilChange" kernelCachePolicy="CacheUntilChange" />
      </profiles>
    </caching>
    <validation validateIntegratedModeConfiguration="false" />
    <handlers>
      <remove name="ChartImageHandler" />
      <add name="ChartImageHandler" preCondition="integratedMode" verb="GET,HEAD,POST"
        path="ChartImg.axd" type="System.Web.UI.DataVisualization.Charting.ChartHttpHandler, System.Web.DataVisualization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
    </handlers>
  </system.webServer>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="System.Web.Helpers" publicKeyToken="31bf3856ad364e35"/>
        <bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0"/>
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="System.Web.WebPages" publicKeyToken="31bf3856ad364e35"/>
        <bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0"/>
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
</configuration>

Web.Release.config转换文件。 (我出于显而易见的原因切换了连接字符串参数;它们都是有序的。)

<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
  <connectionStrings>
    <add name="DBConnString"
      connectionString="Data Source=<server>;Initial Catalog=<cat>;User ID=<userid>;Password=<password>"
      xdt:Transform="Replace" xdt:Locator="Match(name)" />
  </connectionStrings>
  <system.web>
    <compilation debug="false" optimizeCompilations="true" xdt:Transform="SetAttributes(debug,optimizeCompilations)" />
  </system.web>
</configuration>

目前这个问题完全破坏了我的工作,而且我的客户对因应用程序重启而不断失去工作感到非常不满。我完全不知道该怎么做。有什么建议吗?

0 个答案:

没有答案