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

时间:2011-03-22 01:22:44

标签: asp.net iis error-handling

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

  

服务器错误

     

500 - 内部服务器错误。

     

您要查找的资源存在问题,无法显示。

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

  

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

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

23 个答案:

答案 0 :(得分:273)

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

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

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

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 messaging帮助文章中的 Go Daddy's

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

答案 1 :(得分:23)

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

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

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

答案 2 :(得分:9)

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

文件web.config中引用的DLL文件版本和版本中存在差异。

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

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

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

它起作用了,最后我的问题解决了。

答案 3 :(得分:8)

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

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

答案 4 :(得分:7)

就我而言,我在web.config文件中输了一个错误。应用程序密钥以某种方式放在&lt; appSettings&gt;下标签。但我想知道它为什么不显示配置错误。错误500对于调查问题来说过于通用。

答案 5 :(得分:7)

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

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

答案 6 :(得分:4)

除了其他建议之外,请务必将existingResponse节点的httpErrors属性从Auto更改为Replace,或者完全删除该属性。< / p>

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

答案 7 :(得分:3)

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

答案 8 :(得分:2)

  

服务器错误500 - 内部服务器错误。   您正在查找的资源存在问题,无法显示。 Goddady。托管 - 网络 - 经济 - 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>

它解决了我的问题。

答案 9 :(得分:2)

可能您的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>

答案 10 :(得分:2)

我意识到服务器中文件和文件夹的权限也很重要。我从linux操作系统上传了我的文件,通常权限限制为读写。因此,上传时,权限仍然与本地计算机中的权限相同。

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

希望它有所帮助。

答案 11 :(得分:1)

  

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>

答案 12 :(得分:1)

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

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

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

答案 13 :(得分:0)

尝试在“调试”模式下进行编译(在Visual Studio中)。如果您处于发布模式,则将不会出现很多URL重写错误。

Image shows the Debug selection combobox in Visual Studio

enter image description here

答案 14 :(得分:0)

另一个原因可能是Url重写,只需删除/注释web.config文件中的“ rewrite”部分

答案 15 :(得分:0)

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

答案 16 :(得分:0)

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

右键单击相关的应用程序池,单击&#34;高级设置&#34;然后向下滚动到 ID - 它可能会设置为 ApplicationPoolIdentity 。点击按钮(..),然后从下拉列表中选择 NetworkService

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

答案 17 :(得分:0)

如果您正在使用自定义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

答案 18 :(得分:0)

对于那些有这种可能性的人(VPS托管不是虚拟主机):

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

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

答案 19 :(得分:0)

在更改web.config文件之前,我会检查您正在使用的.NET Framework版本是否与我的{{1相同(我的意思是4.5!= 4.5.2)相同设置(GoDaddy中的ASP.Net设置)。这应该会自动将您的web.config文件更改为正确的框架。

另请注意,目前(2016年1月),Plesk panel适用于GoDaddyASP.Net 3.5。要在Visual Studio中使用4.5.2,必须为4.5.2或更新,如果不是2015,则必须下载并安装.NET Framework 4.5.2开发人员包。

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

答案 20 :(得分:0)

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

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

答案 21 :(得分:0)

确保您的帐户使用IIS 7.有关详细信息,请参阅在Windows主机帐户上自定义IIS设置。 按照更改Windows IIS 7主机帐户的管道模式中的说明进行操作。选择集成管道模式。 在“项目引用”部分中,为以下程序集将“复制本地”设置为“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.

答案 22 :(得分:0)

由于多种原因,可能会出现500内部服务器错误。第一个原因可能是web.config文件未正确创建,意味着您错过了web.config文件中的某些标记。其次,这个错误可能是由于某些代码问题造成的。要检查Web应用程序的哪个组件导致此错误,您可以检查web.config文件中的“应用程序”设置。这里给出了使用图表解决和跟踪500内部服务器错误的详细信息: