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


189

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

服务器错误

500内部服务器错误。

您正在寻找的资源有问题,无法显示。

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

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

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


1
确保在目录上具有用于MVC应用程序的通配符映射...
sajoshi 2011年

Answers:


297

首先,您需要启用并查看 Web消息的详细错误,因为这是一条常规消息,没有提供出于安全原因实际发生的情况的信息。

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

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

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。您只需要关闭自定义错误一段时间,然后获取详细的错误页面。

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

此外,这也可以帮助您:如何启用详细的错误消息(来自IIS)。


9
感谢您的帖子!对我有用的部分是:<httpErrors errorMode =“ Detailed” />
jaseeey 2014年

@codemonkeyliketab必须相同或相似...如果在计算机上运行iis express,请打开EventViewer ...
Aristos

4
run the browser on the server为我工作..谢谢你的兄弟
Rajshekar Reddy

1
@学习是的-您仅在短时间内启用了详细的错误,才能发现一些错误并使您的应用运行-然后您将其关闭
Aristos

1
谢谢,启用来自IIS的详细错误消息很有帮助。
Vadim Tofan

25

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

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

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


9

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

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

1
谢谢..为我工作,但是显示视频需要mimeMap吗?
panky sharma

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本地副本中复制了连接字符串和其他引用。

我只是编译了该应用程序,并将其发布到本地文件夹,然后将发布的文件夹通过FTP传输到goDaddy。

它奏效了,终于我的问题解决了。


我的错误通过以下方法解决:stackoverflow.com/questions/11359957/…还必须安装Elmah
Per G

7

就我而言,我在web.config文件中输入了错误。应用程序密钥以某种方式放置在<appSettings>标记下。但是我不知道为什么它不显示配置错误。错误500太笼统,无法调查问题。


只是在这里一样。尽管我将“显示详细错误”设置为true,但web.config被错误地复制到了子目录中,并导致奇怪的错误。
Avni Yayin '18

7

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

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


5

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

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

4

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


3

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

它解决了我的问题。


3

对于IIS 8,除了更改customErrors = Off以显示错误内容外,还有其他步骤需要执行。

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

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


您错过了结束/“详细”之后
manuel-84

此解决方案是IIS 10.0.14393.0所需的解决方案。
Marcus Parsons

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>

2

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

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

希望它能帮助某人。


这个答案与2014年7月的答案基本不一样吗?
李慧夏

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>

在我的情况下,错误是由web.config中的<httpRuntime enableVersionHeader =“ false” />引起的
b3wii

1

如果您使用的是自定义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;
    }

另外,请务必检查Exception's InnerException


1

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


该域名注册于2018年6月15日到期。
Patricia

该链接现在正在提供恶意软件。我已删除链接
Liam

0

确保您的帐户使用IIS7。有关更多信息,请参见Windows托管帐户上的自定义IIS设置。请按照Windows IIS 7托管帐户上的更改管道模式中的说明进行操作。选择“集成管道模式”。在“项目参考”部分中,将以下程序集的“本地复制”设置为True:

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

将以下程序集添加到您的项目,然后将“本地复制”设置为True:

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

0

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

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


0

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

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

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


0

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

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

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


0

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

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

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


0

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



By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.