【问题标题】:Deploying website: 500 - Internal server error部署网站:500 - 内部服务器错误
【发布时间】:2018-11-15 11:42:44
【问题描述】:

我正在尝试部署一个 ASP.NET 应用程序。我已将该站点部署到 IIS,但是当使用浏览器访问它时,它会显示:

服务器错误

500 - 内部服务器错误。

你要找的资源有问题,无法显示。

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

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

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

【问题讨论】:

  • 确保在目录中为 MVC 应用程序设置了通配符映射...

标签: asp.net iis error-handling


【解决方案1】:

首先,您需要启用并查看网络消息的详细错误,因为出于安全原因,这是一条一般性消息,并未提供有关实际情况的信息。

有了详细的错误,你可以在这里找到真正的问题。

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

开启IIS 6

<configuration>
    <system.web>
        <customErrors mode="Off"/>
        <compilation debug="true"/>
    </system.web>
</configuration>

在 IIS 7 上

<configuration>
    <system.webServer>
        <httpErrors errorMode="Detailed" />
        <asp scriptErrorSentToBrowser="true"/>
    </system.webServer>
    <system.web>
        <customErrors mode="Off"/>
        <compilation debug="true"/>
    </system.web>
</configuration>

注意:可以避免Debug=true。只需要关闭自定义错误一会,就可以得到详细的错误页面。

参考:Enabling Windows custom error messagingGo Daddy's帮助文章中。

另外,这可以提供帮助:How to enable the detailed error messages(来自 IIS)。

【讨论】:

  • 感谢您的帖子!为我做的部分是:
  • @codemonkeyliketab 必须相同...或相似...如果您在计算机上运行 iis express,请打开您的 EventViewer...
  • run the browser on the server 为我工作.. 谢谢兄弟
  • @Learning 是的 - 您只在短时间内启用详细错误,以便能够找到您的一些错误并使您的应用程序运行 - 然后您将其关闭
  • 谢谢,从 IIS 启用详细的错误消息很有帮助。
【解决方案2】:

我在这个问题上大发雷霆。确保以下条目在根 web.config 文件中为我修复了它:

<configuration>
  <system.webServer>
    <validation validateIntegratedModeConfiguration="false" />
  </system.webServer>
</configuration>

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

【讨论】:

    【解决方案3】:

    对我来说,web.config 中的以下代码是罪魁祸首。当我删除它时,网站运行良好。

      <staticContent>
        <mimeMap fileExtension=".mp4" mimeType="video/mp4" />
      </staticContent>
    

    【讨论】:

    • 谢谢 .. 为我工作,但显示视频需要 mimeMap 吗?
    • 这个“修复”是针对一个非常具体的问题,OP 要求一个一般性的答案,这不包括
    【解决方案4】:

    在 godaddy.ocm 共享主机上部署 ASP.NET MVC 3.0 应用程序时,我终于解决了这个“500 Internal server”错误。

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

    我尝试了各种论坛中提到的所有选项。没有任何帮助,尽管每个人都建议了相同的修复方法,但不知何故,它在我的场景中不起作用。终于在敲了我的头两天之后。 我决定从项目中删除所有 DLL 文件引用并删除 web.cofig(制作本地副本)并让应用程序抛出错误,然后将 DLL 文件一一添加到 local=true。

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

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

    成功了,我的问题终于解决了。

    【讨论】:

    【解决方案5】:

    就我而言,我在web.config 文件中输入了一个错误。应用程序密钥不知何故被放在 标记下。但我想知道为什么它不显示配置错误。错误 500 过于笼统,无法调查问题。

    【讨论】:

    • 这里也一样。 web.config 被错误地复制到子目录并导致出现错误,尽管我将“显示详细错误”设置为 true。
    【解决方案6】:

    我第一次尝试发布然后运行一个仅提供 HTML 的非常简单的网站,结果显示“由于发生内部服务器错误,该页面无法显示。”

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

    【讨论】:

      【解决方案7】:

      除了其他建议之外,请确保将 httpErrors 节点的 existingResponse 属性从 Replace 更改为 Auto,或完全删除该属性。

      <httpErrors existingResponse="Replace" />
                                    ^^^^^^^ not going to work with this here
      

      【讨论】:

        【解决方案8】:

        服务器错误 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>
        

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

        <httpModules></httpModules>
        

        它解决了我的问题。

        【讨论】:

        • 我在阅读其他提示后添加了&lt;compilation debug="true" ,但在&lt;compilation targetFramework= 的单独而不是合并行上,感谢您帮助我发现这一点。
        【解决方案9】:

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

        【讨论】:

          【解决方案10】:

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

          <system.web>
             <customErrors mode="Off" />
          </system.web>
          <system.webServer>
             <httpErrors existingResponse="PassThrough" errorMode="Detailed"/>
          </system.webServer>
          

          Raul 在此链接中回答了问题Turn off IIS8 custom errors by Raul

          【讨论】:

          • 这个解决方案是 IIS 10.0.14393.0 所需要的。
          【解决方案11】:

          可能您的 web.config 文件有误或缺少某些标记。我使用.NET 4 的正确配置标签解决了我的问题。

          <system.web>
              <compilation debug="true" strict="false" explicit="true" targetFramework="4.0">
                  <assemblies>
                      <add assembly="System.Deployment, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
                      <add assembly="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
                      <add assembly="System.Configuration, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
                      <add assembly="System.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
                      <add assembly="System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
                      <add assembly="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
                      <add assembly="System.Web.Services, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
                      <add assembly="System.Xml, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
                      <add assembly="System.Transactions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
                  </assemblies>
              </compilation>
              <pages controlRenderingCompatibilityVersion="3.5" clientIDMode="AutoID">
                  <namespaces>
                      <clear/>
                      <add namespace="System"/>
                      <add namespace="System.Collections"/>
                      <add namespace="System.Collections.Specialized"/>
                      <add namespace="System.Configuration"/>
                      <add namespace="System.Text"/>
                      <add namespace="System.Text.RegularExpressions"/>
                      <add namespace="System.Web"/>
                      <add namespace="System.Web.Caching"/>
                      <add namespace="System.Web.SessionState"/>
                      <add namespace="System.Web.Security"/>
                      <add namespace="System.Web.Profile"/>
                      <add namespace="System.Web.UI"/>
                      <add namespace="System.Web.UI.WebControls"/>
                      <add namespace="System.Web.UI.WebControls.WebParts"/>
                      <add namespace="System.Web.UI.HtmlControls"/>
                  </namespaces>
              </pages>
              <authentication mode="None"/>
          </system.web>
          

          【讨论】:

            【解决方案12】:

            我意识到您服务器中文件和文件夹的权限也很重要。我从 linux 操作系统上传了我的文件,通常权限是有限的读写。所以上传的时候,权限还是和本地机器一样。

            我遇到了同样的错误,我只是更改了我上传的文件夹的权限,错误就消失了。

            希望对某人有所帮助。

            【讨论】:

            【解决方案13】:

            500 内部错误
            Windows 主机错误

            Godaddy 托管问题

            我一直面临同样的问题,但现在我的问题已经解决了。始终在此托管中使用它。

            我还建议大家对 web.config 文件进行任何更改。请一一进行并在实时域上进行测试,以便您找到确切的问题或您的托管服务提供商不允许您使用的功能。

            <?xml version="1.0"?>
            
            <configuration>
                <system.web>
                    <trust level="Medium"/>
                    <compilation debug="true" targetFramework="4.5">
                        <assemblies>
                            <add assembly="System.Data.Linq, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
                        </assemblies>
                    </compilation>
            
                    <httpRuntime targetFramework="4.5" />
                    <sessionState mode="InProc" cookieless="false" timeout="90" />
                    <authentication mode="Forms">
                        <forms loginUrl="default.aspx"  
                               defaultUrl="default.aspx"
                               protection="All"
                               cookieless="UseCookies"
                               slidingExpiration="false"
                               timeout="30"
                               name="aeon.corpusjuris.in" />
                    </authentication>
            
                    <customErrors 
                        mode="Off" 
                        defaultRedirect="errorpage.aspx">
            
                        <error statusCode="403" redirect="errorpage.aspx"/>
                        <error statusCode="404" redirect="errorpage.aspx"/>
                    </customErrors>
            
                    <!--  <httpModules>
                            <add name="HTTPCaching" type="HTTPCaching"/>
                        </httpModules>
                    -->
                </system.web>
            
                <runtime>
                    <performanceScenario value="HighDensityWebHosting"  />
                </runtime>
            
                <system.webServer>
                    <!--  <modules runAllManagedModulesForAllRequests="true">
                            <add name="HTTPCaching" type="HTTPCaching"/>
                        </modules>
                    -->
            
                    <defaultDocument>
                        <files>
                            <clear />
                            <add value="default.aspx" />
                        </files>
                    </defaultDocument>
            
                    <httpErrors errorMode="Detailed" />
                    <asp scriptErrorSentToBrowser="true"/>
            
                    <staticContent>
                        <clientCache cacheControlCustom="public"
                                     cacheControlMaxAge="60:00:00"
                                     cacheControlMode="UseMaxAge" />
                    </staticContent>
                </system.webServer>
            
                <system.web.extensions>
                     <scripting>
                         <webServices>
                             <jsonSerialization maxJsonLength="90000000">
                             </jsonSerialization>
                         </webServices>
                     </scripting>
                </system.web.extensions>
            
            </configuration>
            

            【讨论】:

            • 在我的情况下,错误是由 web.config 中的 引起的
            【解决方案14】:

            如果您使用的是自定义 HttpHandler(即实现 IHttpModule),请确保您正在检查对其 Error 方法的调用。

            您可以让您的处理程序在本地调试期间抛出实际的HttpExceptions(它有一个有用的Message 属性),如下所示:

                public void Error(object sender, EventArgs e)
                {
                    if (!HttpContext.Current.Request.IsLocal)
                        return;
                    var ex = ((HttpApplication)sender).Server.GetLastError();
                    if (ex.GetType() == typeof(HttpException))
                        throw ex;
                }
            

            还要确保检查异常的InnerException

            【讨论】:

              【解决方案15】:

              500 内部服务器错误可能由多种原因引起。第一个原因可能是 web.config 文件没有正确创建,这意味着您错过了 web.config 文件中的一些标签。其次,此错误可能是由于某些代码问题造成的。要检查 Web 应用程序的哪个组件导致此错误,您可以检查 web.config 文件中的应用程序设置。 500内部服务器错误的解决和跟踪的细节图如下:

              【讨论】:

                【解决方案16】:

                确保您的帐户使用 IIS 7。有关详细信息,请参阅自定义 Windows 主机帐户上的 IIS 设置。 按照在 Windows IIS 7 主机帐户上更改管道模式中的说明进行操作。选择集成管道模式。 在您的项目引用部分,将以下程序集的 Copy Local 设置为 True:

                System.Web.Abstractions
                System.Web.Helpers
                System.Web.Routing
                System.Web.Mvc
                System.Web.WebPages
                

                将以下程序集添加到您的项目中,然后将 Copy Local 设置为 True:

                Microsoft.Web.Infrastructure
                System.Web.Razor
                System.Web.WebPages.Deployment
                System.Web.WebPages.Razor
                Publish your application.
                

                【讨论】:

                  【解决方案17】:

                  有时,原因可能是您的 .dll 程序集之一未在服务器上正确注册。

                  例如,您可以在安装了 Office 的本地计算机上成功运行 C# Excel Web 应用程序,但在服务器部署时收到 500 错误,因为服务器上没有安装 Office 套件,因此您会收到服务器错误.

                  【讨论】:

                    【解决方案18】:

                    对于那些有这种可能性的人(VPS 托管而不是网络托管):

                    通过远程桌面连接到您的托管服务器。从远程桌面打开 Web 浏览器,您将看到错误的详细说明。

                    您无需修改​​ web.config 或向其他任何人公开任何详细信息。

                    【讨论】:

                      【解决方案19】:

                      如果您使用的是 IIS 8.5,则可能需要将 ApplicationPool ID 设置从 ApplicationPoolId 更改为 NetworkService

                      右键单击有问题的应用程序池,单击“高级设置”,然后向下滚动到 ID - 它可能会设置为 ApplicationPoolIdentity。点击按钮 (..) 并从下拉列表中选择 NetworkService

                      如果它是 .NET 2.0 应用程序,请确保您没有在应用程序池中引用 4.0 框架。

                      【讨论】:

                        【解决方案20】:

                        在更改web.config 文件之前,我会检查您使用的.NET Framework 版本与GoDaddy 设置(ASP. Plesk panel 中的网络设置)。这应该会自动将您的 web.config 文件更改为正确的框架。

                        另请注意,目前(2016 年 1 月),GoDaddyASP.Net 3.54.5.2 一起使用。要将 4.5.2 与 Visual Studio 一起使用,它必须是 2012 或更新版本,如果不是 2015,则必须下载并安装 .NET Framework 4.5.2 开发人员包。

                        如果仍然无法正常工作,那么是的,您的下一步应该是启用详细的错误报告,以便您可以对其进行调试。

                        【讨论】:

                          【解决方案21】:

                          我最近遇到了同样的问题,服务器上的磁盘空间已满。清除一些空间已解决问题。

                          【讨论】:

                            【解决方案22】:

                            尝试在调试模式下编译(在 Visual Studio 中)。如果您处于 Release 模式,很多 URL Rewrite 错误将不可用。

                            Image shows the Debug selection combobox in Visual Studio

                            【讨论】:

                              猜你喜欢
                              • 2023-03-12
                              • 2016-03-21
                              • 1970-01-01
                              • 1970-01-01
                              • 1970-01-01
                              • 2021-12-02
                              • 2013-03-09
                              相关资源
                              最近更新 更多