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

pro*_*ger 44 c# asp.net iis asp.net-mvc internal-server-error

我已成功使用IIS 7在本地计算机上安装了网站.但是当我在实时服务器上部署它时,我收到以下错误:

"由于发生了内部服务器错误,无法显示页面"没有其他内容.

在live上使用相同的IIS 7并设置为Detailed errors在Error Pages模块中,但仍然相同.可能是什么原因?

谢谢

mik*_*son 56

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

此错误仅在静态文件上返回 - 例如图像,css,js文件都说这个错误(文本本身,响应中没有其他html或文本).

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

    <staticContent>
        <clientCache cacheControlMode="UseMaxAge" cacheControlMaxAge="30.00:00:00" />
        <mimeMap fileExtension=".json" mimeType="application/json" />
    </staticContent>
Run Code Online (Sandbox Code Playgroud)

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

  • 它也适用于.woff等类型. (10认同)
  • 在设置之前清除条目应该可以防止冲突<remove fileExtension =".json"/> <mimeMap fileExtension =".json"mimeType ="application/json"/> (3认同)
  • 这正是我遇到的问题...按照上面的方法删除就可以了,谢谢! (2认同)

Eri*_*arr 28

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

<configuration>
    <system.webServer>
        <httpErrors errorMode="Detailed"></httpErrors>
    </system.webServer>
</configuration>
Run Code Online (Sandbox Code Playgroud)

执行此操作后,您应该从服务器获取更详细的错误消息.

在我的特定情况下,更详细的错误指出web.config文件的<defaultDocument>部分不允许在我放置web.config的文件夹级别.它说"此配置部分不能在此路径中使用.当部分锁定在父级别时会发生这种情况.默认情况下锁定(overrideModeDefault ="Deny"),或者由overrideMode ="Deny的位置标记显式设置"或遗留的allowOverride ="false"."


小智 6

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

<system.web>
  <customErrors mode="Off" />
</system.web>
Run Code Online (Sandbox Code Playgroud)

您可能还需要删除/注释以下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>
Run Code Online (Sandbox Code Playgroud)

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

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


pro*_*ger 5

我已经修好了。我有以下部分in web.config

httpErrors existingResponse="PassThrough"
Run Code Online (Sandbox Code Playgroud)

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