无法显示页面,因为服务器发生内部服务器错误

Posted

技术标签:

【中文标题】无法显示页面,因为服务器发生内部服务器错误【英文标题】:The page cannot be displayed because an internal server error has occurred on server 【发布时间】:2015-08-24 05:08:05 【问题描述】:

我已经使用 IIS 7 在本地机器上成功安装了网站。 但是当我将它部署在实时服务器上时,出现以下错误:

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

在现场使用相同的 IIS 7,并在错误页面模块中设置为 Detailed errors,但仍然相同。 可能是什么原因?

谢谢

【问题讨论】:

【参考方案1】:

我刚刚收到此错误,它是由 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>

因此,解决方案是一次删除任何这些 mimeType 条目,以确认哪些是需要的,哪些会杀死您的应用!

更新

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

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

【讨论】:

同样适用于.woff等类型。 我确定这不适用于我,但我删除了 staticContent 中的所有内容,我终于可以看到真正的错误消息!谢谢。 在设置之前清除条目应该可以防止冲突 这正是我遇到的问题...删除上面的伎俩,谢谢! 同样,MVC 应用程序的 web.config 文件中的 MIME 类型已经在服务器 IIS applicationConfig 文件中定义,因此一旦从站点级别的 web.config 文件中删除,statis 文件就会服务。【参考方案2】:

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

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

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

在我的特定情况下,更详细的错误指出我的 web.config 文件的 &lt;defaultDocument&gt; 部分在我放置 web.config 的文件夹级别是不允许的。它说

此配置部分不能用于此路径。当该部分锁定在父级别时会发生这种情况。锁定是默认情况下 (overrideModeDefault="Deny"),或由具有 overrideMode="Deny" 或传统 allowOverride="false" 的位置标记显式设置。 "

【讨论】:

这帮助我确定了问题 这也帮助我确定了西蒙的问题 这对我也有帮助,我在 配置中复制了小节。两个部分具有相同的名称...【参考方案3】:

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

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

您可能还需要删除/注释掉以下 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。

【讨论】:

在我的例子中,我将一个网站从 II7 迁移到 IIS8.x Win 2012 服务器,看起来 httpErrors 的格式在两个服务器之间可能略有不同。注释掉 httpErrors 部分为我解决了这个问题。从来自 IIS7.x 服务器的 web.config 中删除 httpErrors 部分后,我从 IIS8.5 GUI 重新创建了自定义错误。【参考方案4】:

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

httpErrors existingResponse="PassThrough"

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

【讨论】:

【参考方案5】:

在我的例子中,在 Web.config 中设置 httpErrors 等并不能帮助识别问题。

相反,我做了:

    为出现错误的网站激活“失败的请求跟踪”。 为 HTTP 错误 350-999(以防万一)配置了跟踪,虽然我怀疑是 500。 再次调用了错误的 URL。 在日志文件夹中观看(在我的例子中是“%SystemDrive%\inetpub\logs\FailedReqLogFiles”)。 在 Internet Explorer 中打开了其中一个 XML 文件。

然后我看到了一个包含详细异常信息的条目。在我的情况下是

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

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

【讨论】:

【参考方案6】:

我在 web.config 中评论了这一行后,它似乎工作了

<compilation debug="true" targetFramework="4.5.2" />

【讨论】:

在这种情况下,我相信您可以从 IIS 部分下的 Windows“程序和功能”中简单地安装该框架版本(或更高版本)。【参考方案7】:

我最终在此页面上运行了 Azure 上的 Web 应用程序。

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

我们遇到了这个问题,因为我们在 web.config 中进行了 applicationInitialization

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

如果在 Azure 上运行,have a look at site slots。在将暂存槽中的页面交换 到生产槽之前,您应该预热它。

【讨论】:

【参考方案8】:

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

  <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 出现“无法添加重复的集合条目”错误。

【讨论】:

【参考方案9】:

我使用 Everleap 进行托管并迁移到 Azure,我收到了这个错误。 Everleap 部署到他们的服务器需要 web.config ` 部分中的以下内容:

<modules>
    <remove name="AspNetCoreModuleV2" />
    <add name="AspNetCoreModuleV2" />
  </modules>

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

【讨论】:

【参考方案10】:

对于那些因为它在短语中排名很高而点击此 *** 条目的人:

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

在我个人的情况下,我看到了这个确切的错误消息,我打开了 python 2.7,认为我可以在我的 .NET API 中使用一些 python。然后,当我尝试从 Visual Studio Pro 2013 部署 API 或 MVC 的香草版本时,我收到了确切的错误消息。我正在部署到 azure cloud webapp。

希望这对有相同经历的人有所帮助。我什至没想过要关闭 python,直到我发现这个 suggestion。

【讨论】:

以上是关于无法显示页面,因为服务器发生内部服务器错误的主要内容,如果未能解决你的问题,请参考以下文章

500.19 - 内部服务器错误 - 无法访问请求的页面,因为该页面的相关配置数据无效

500 - 内部服务器错误.您查找的资源存在问题,因而无法显示.

500内部服务器错误是啥意思?

WordPress 安装插件导致 HTTP 500 内部服务器错误的问题

cgi 页面在本地 IIS 中不起作用

贝宝沙盒内部服务错误