C# 无法显示该页,因为服务器上发生内部服务器错误

C# 无法显示该页,因为服务器上发生内部服务器错误,c#,asp.net,asp.net-mvc,iis,internal-server-error,C#,Asp.net,Asp.net Mvc,Iis,Internal Server Error,我已使用IIS 7成功地在本地计算机上安装了网站。 但当我将其部署到live server上时,出现以下错误: “由于发生内部服务器错误,无法显示页面” 没有别的了 在live上使用相同的IIS 7,并在错误页面模块中设置为有详细错误,但仍然得到相同的结果。 原因是什么 谢谢修改web.config以显示服务器错误详细信息: <system.web> <customErrors mode="Off" /> </system.web> 您可能还需要删除

我已使用IIS 7成功地在本地计算机上安装了网站。 但当我将其部署到live server上时,出现以下错误:

“由于发生内部服务器错误,无法显示页面” 没有别的了

在live上使用相同的IIS 7,并在错误页面模块中设置为有
详细错误
,但仍然得到相同的结果。 原因是什么


谢谢

修改web.config以显示服务器错误详细信息:

<system.web>
  <customErrors mode="Off" />
</system.web>

您可能还需要删除/注释掉follow httpErrors部分

  <system.webServer>
    <httpErrors errorMode="Custom">
      <remove statusCode="404" />
      <error statusCode="404" path="/Error/Error404" responseMode="ExecuteURL" />
      <remove statusCode="500" />
      <error statusCode="500" path="/Error/Error500" responseMode="ExecuteURL" />
      <remove statusCode="403" />
      <error statusCode="403" path="/Error/Error403" responseMode="ExecuteURL" />
    </httpErrors>
  </system.webServer>

根据我的经验,如果您直接遇到服务器错误,这可能是由程序集版本不匹配引起的

检查web.config中声明的内容以及bin文件夹项目中的实际ddl。

我已经修复了它。 我在web.config中有以下部分

httpErrors existingResponse="PassThrough"

当我删除它时,我得到了一个真正的错误

我刚得到这个错误,它是由web.config中重复的静态内容MIME类型引起的

<compilation debug="true" targetFramework="4.5.2" />
<applicationInitialization
    doAppInitAfterRestart="true"
    skipManagedModules="true">
    <add initializationPage="/default.aspx" hostName="myhost"/>
</applicationInitialization>
此错误仅在静态文件上返回-例如图像、css、js文件都表示此错误(文本本身,响应中没有其他html或文本)

调试的方法是在静态内容下查看web配置。这里我们加载了一个json文件扩展名。这在IIS7上是必需的,但如果在IIS8上使用,则会终止应用程序,因为json现在已在服务器级别预加载

    <staticContent>
        <clientCache cacheControlMode="UseMaxAge" cacheControlMaxAge="30.00:00:00" />
        <mimeMap fileExtension=".json" mimeType="application/json" />
    </staticContent>

所以解决方案是一次删除一个mimeType条目,以确认哪些是必需的,哪些会杀死你的应用程序

更新

实际上,最好的解决方案是由这里的一位评论员提供的。您可以先删除,然后添加,这将始终有效,无论它是否已定义。像这样:

<remove fileExtension=".json" /> 
<mimeMap fileExtension=".json" mimeType="application/json" />

适用于点击此stackoverflow条目的用户,因为它在短语中排名靠前:

由于发生内部服务器错误,无法显示该页

在我个人的情况下,由于这个错误消息,我打开了Python2.7,认为我可以在我的.NETAPI中使用一些python。然后,当我试图从VisualStudioPro 2013部署API或MVC的普通版本时,我收到了确切的错误消息。我正在部署到azure云webapp


希望这能帮助任何有我同样经历的人。直到我发现这一点,我才想到关闭python。

我认为最好的第一种方法是确保通过web.config文件打开详细的错误消息,如下所示:

<configuration>
    <system.webServer>
        <httpErrors errorMode="Detailed"></httpErrors>
    </system.webServer>
</configuration>

完成此操作后,您应该会从服务器获得更详细的错误消息

在我的特殊情况下,更详细的错误指出web.config文件的
部分不允许位于我放置web.config的文件夹级别。上面说

无法在此路径上使用此配置节。当节在父级锁定时会发生这种情况。锁定在默认情况下(overrideModeDefault=“Deny”),或者由带有overrideMode=“Deny”或旧版allowOverride=“false”的位置标记显式设置。"


在我在web.config中注释了这一行之后,它似乎可以工作

<compilation debug="true" targetFramework="4.5.2" />
<applicationInitialization
    doAppInitAfterRestart="true"
    skipManagedModules="true">
    <add initializationPage="/default.aspx" hostName="myhost"/>
</applicationInitialization>

在我的例子中,在Web.config中设置
httpErrors
等内容无助于识别问题

相反,我做到了:

  • 为出现错误的网站激活“失败的请求跟踪”
  • 配置了HTTP错误跟踪350-999(以防万一),尽管我怀疑是500
  • 再次调用错误的URL
  • 在日志文件夹中观察(在我的示例中为“%SystemDrive%\inetpub\logs\FailedReqLogFiles”)
  • 在Internet Explorer中打开了一个XML文件
  • 然后我看到一个条目,其中包含详细的异常信息

    \?\C:\Websites\example.com\www\web.config(592):无法添加唯一键属性“fileExtension”设置为“.json”的“mimeMap”类型的重复集合项


    我现在能够解决它并修复错误。之后,我再次停用了“失败的请求跟踪”。

    我在Azure上运行Web应用程序

    由于发生内部服务器错误,无法显示该页

    我们遇到了这个问题,因为我们在web.config中进行了应用程序初始化

    <compilation debug="true" targetFramework="4.5.2" />
    
    <applicationInitialization
        doAppInitAfterRestart="true"
        skipManagedModules="true">
        <add initializationPage="/default.aspx" hostName="myhost"/>
    </applicationInitialization>
    

    。您应该先预热暂存插槽上的页面,然后再将其交换到生产插槽。

    当我添加了带有大量初始化页面的applicationinitialization模块并将其部署到Azure应用程序上时,我遇到了相同的错误。问题是我的applicationinitialization模块中存在重复条目。我不知道查看日志中的任何错误,因此很难排除故障。下面是错误代码的示例:

      <configuration>
      <system.webServer>
        <applicationInitialization doAppInitAfterRestart="true" skipManagedModules="true">
          <add initializationPage="/init1.aspx?call=2"/>
          <add initializationPage="/init1.aspx?call=2" />
        </applicationInitialization>
      </system.webServer>
    
    
    

    确保没有重复条目,因为这些条目将被视为不允许的重复密钥,并将导致“无法添加重复的集合条目”web.config出现错误。

    我使用Everleap托管并迁移到Azure,在那里我遇到了此错误。Everleap部署到其服务器时,需要在web.config`部分执行以下操作:

    
    

    当我注释掉这段代码时,该应用程序在Azure上运行。

    它也适用于.woff等类型。我确信这段代码不适用于我,但我删除了staticContent中的所有内容,我终于可以看到真正的错误消息了!谢谢。在设置之前清除条目应该可以防止冲突。这正是我遇到的问题。。。如上所述移除完成了操作,谢谢!同样,MVC应用程序的web.config文件中的MIME类型已经在服务器IIS应用程序配置文件中定义,因此一旦从站点级别的web.config文件中删除,就会提供statis文件