【问题标题】: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,但仍然相同。 可能是什么原因?

谢谢

【问题讨论】:

    标签: c# asp.net asp.net-mvc iis internal-server-error


    【解决方案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 等并不能帮助识别问题。

      相反,我做了:

      1. 为出现错误的网站激活“失败的请求跟踪”。
      2. 为 HTTP 错误 350-999(以防万一)配置了跟踪,虽然我怀疑是 500。
      3. 再次调用了错误的 URL。
      4. 在日志文件夹中观看(在我的例子中是“%SystemDrive%\inetpub\logs\FailedReqLogFiles”)。
      5. 在 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】:

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

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

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

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

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多