部署网站:500 - 内部服务器错误

Jac*_*zek 177 asp.net iis error-handling

我正在尝试部署ASP.NET应用程序.我已将该站点部署到IIS,但在使用浏览器访问它时,它显示了以下内容:

服务器错误

500内部服务器错误.

您正在查找的资源存在问题,无法显示.

在摆弄web.config之后,我得到了:

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

如何查看此服务器错误背后的实际问题?

Ari*_*tos 282

首先,您需要启用并查看 Web消息的详细错误,因为这是一般消息,但没有提供有关出于安全原因的实际情​​况的信息.

有了详细的错误,您可以在此处找到真正的问题.

此外,如果您可以在服务器上运行浏览器,则会获得有关错误的详细信息,因为服务器会识别您是本地的并显示给您.或者,如果您可以使用事件查看器读取服务器的日志,则还会看到错误的详细信息.

IIS 6上

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

在IIS 7上

<configuration>
    <system.webServer>
        <httpErrors errorMode="Detailed" />
        <asp scriptErrorSentToBrowser="true"/>
    </system.webServer>
    <system.web>
        <customErrors mode="Off"/>
        <compilation debug="true"/>
    </system.web>
</configuration>
Run Code Online (Sandbox Code Playgroud)

注意:您可以避免Debug = true.您只需关闭一段时间的自定义错误并获取详细的错误页面.

参考:在Go Daddy的帮助文章中启用Windows自定义错误消息.

此外,这可以帮助:如何启用详细的错误消息(从IIS).

  • 谢谢你的帖子!为我做的部分是:<httpErrors errorMode ="Detailed"/> (8认同)
  • `运行服务器上的浏览器`为我工作..谢谢兄弟 (4认同)
  • @Learning是的,有 - 您仅在短时间内启用详细错误,以便能够找到一些错误并使您的应用程序运行 - 然后将其关闭 (2认同)
  • 谢谢,启用 IIS 的详细错误消息很有帮助。 (2认同)
  • 只需在 &lt;system.webServer&gt; 中添加 &lt;httpErrors errorMode="Detailed" /&gt; (2认同)

Jos*_*ank 23

在这个问题上,我正在拔头发.确保以下条目在根web.config文件中为我修复:

<configuration>
  <system.webServer>
    <validation validateIntegratedModeConfiguration="false" />
  </system.webServer>
</configuration>
Run Code Online (Sandbox Code Playgroud)

请记住,如果已经存在,则必须将其添加到现有XML元素中.您不能只在文件的末尾添加,因为您不能拥有任何元素的多个副本.


小智 9

在godaddy.ocm共享主机上部署ASP.NET MVC 3.0应用程序时,我终于解决了这个"500内部服务器"错误.

不知何故,引用的DLL文件版本和文件中提到的版本存在差异web.config.

我尝试了各种论坛中提到的所有选项.没有任何帮助,虽然每个人都提出了同样的解决方案,但不知怎的,它在我的场景中不起作用.最后敲了两天头.我决定删除所有DLL文件引用并从项目中删除web.cofig(制作本地副本)并让应用程序抛出错误,然后逐个添加DLL文件,将副本复制到local = true.

添加完所有DLL文件后,我创建了一个新的ASP.NET MVC应用程序,并将新应用程序的web.config复制到我的实际应用程序中.所以我的实际应用程序现在有了一个新的web.config,然后我从我保存的web.config的本地副本中复制了connectionstring和其他引用.

我刚刚编译了应用程序并发布到本地文件夹并将已发布的文件夹发送到goDaddy.

它工作,最后我的问题解决了.


小智 9

对我来说,web.config中的以下代码是罪魁祸首.当我删除它,网站工作正常.

  <staticContent>
    <mimeMap fileExtension=".mp4" mimeType="video/mp4" />
  </staticContent>
Run Code Online (Sandbox Code Playgroud)

  • 谢谢..为我工作,但是显示视频需要 mimeMap 吗? (2认同)
  • 这个“修复”是针对一个非常具体的问题,OP要求一个一般性的答案,这不包括 (2认同)

小智 7

在我的情况下,我在我的web.config文件中犯了一个错误.应用程序密钥以某种方式放在<appSettings>标记下.但我想知道它为什么不显示配置错误.错误500对于调查问题来说过于通用.


ken*_*dev 7

我第一次尝试发布然后运行一个只提供HTML的非常简单的站点产生"由于发生了内部服务器错误,因此无法显示该页面".

问题:我在Visual Studio 中将站点设置为.NET 3.5(右键单击网站项目 - >属性页 - >构建),但将Azure中的Web站点配置为.NET 4.0.哎呀!我在Azure中将其更改为3.5,并且它有效.


lap*_*sus 6

如果物理主目录的权限不足(即 IIS_IUSRS 无访问权限),IIS 还会报告状态代码 500,而没有任何事件日志提示。


Eri*_*ikE 5

除了其他建议外,请确保existingResponsehttpErrors节点的属性更改为Autofrom Replace,或完全删除该属性。

<httpErrors existingResponse="Replace" />
                              ^^^^^^^ not going to work with this here
Run Code Online (Sandbox Code Playgroud)


小智 5

服务器错误 500 - 内部服务器错误。您要查找的资源有问题,无法显示。干爹。托管 - 网络 - 经济 - Windows Plesk

就我而言,我替换了以下代码:

<configuration> 
  <system.webServer> 
    <httpErrors errorMode="Detailed" /> 
    <asp scriptErrorSentToBrowser="true"/> 
  </system.webServer> 
  <system.web> 
    <customErrors mode="Off"/>
    <compilation debug="true" targetFramework="4.0"/>
  </system.web> 
</configuration>
Run Code Online (Sandbox Code Playgroud)

然后将框架3.5更改为框架4。它显示了我的详细错误。我删除了以下代码:

<httpModules></httpModules>
Run Code Online (Sandbox Code Playgroud)

它解决了我的问题。


Mic*_*lle 5

对于 IIS 10,除了更改 customErrors=Off 来显示错误内容之外,还有一个额外的步骤需要执行。

<system.web>
   <customErrors mode="Off" />
</system.web>
<system.webServer>
   <httpErrors existingResponse="PassThrough" errorMode="Detailed"/>
</system.webServer>
Run Code Online (Sandbox Code Playgroud)

Raul 在这个链接中回答了Raul 的关闭 IIS8 自定义错误中的问题

  • 此解决方案正是 IIS 10.0.14393.0 所需要的。 (2认同)