提问人:Jacob Jedryszek 提问时间:3/22/2011 最后编辑:CommunityJacob Jedryszek 更新时间:6/21/2022 访问量:636652
部署网站:500 - 内部服务器错误
Deploying website: 500 - Internal server error
问:
我正在尝试部署 ASP.NET 应用程序。我已将站点部署到 IIS,但是当使用浏览器访问它时,它向我显示:
服务器错误
500 - 内部服务器错误。
您要查找的资源有问题,无法显示。
在摆弄了web.config之后,我得到了:
由于发生内部服务器错误,无法显示该页面。
如何查看此服务器错误背后的实际问题?
答:
首先,您需要启用并查看 Web 消息的详细错误,因为这是一条一般消息,出于安全原因,没有提供有关实际情况的信息。
通过详细的错误,您可以在此处找到真正的问题。
此外,如果您可以在服务器上运行浏览器,您将获得有关错误的详细信息,因为服务器会识别出您是本地人并显示给您。或者,如果可以使用事件查看器读取服务器的日志,则还会看到错误的详细信息。
###On IIS 6
<configuration>
<system.web>
<customErrors mode="Off"/>
<compilation debug="true"/>
</system.web>
</configuration>
###On 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。您只需要暂时关闭自定义错误,即可获得详细的错误页面。
这可以帮助:如何启用详细的错误消息(来自 IIS)。
评论
run the browser on the server
为我工作..谢谢兄弟
我在这个问题上拔掉了头发。确保以下条目在根文件中,为我修复了它:web.config
<configuration>
<system.webServer>
<validation validateIntegratedModeConfiguration="false" />
</system.webServer>
</configuration>
请记住,如果现有 XML 元素已存在,则必须将其添加到现有 XML 元素中。你不能只在文件的末尾添加,因为你不能有任何元素的多个副本。
就我而言,我在我的文件中放了一个错误。应用程序密钥以某种方式放在 <appSettings> 标记下。但我想知道为什么它没有显示配置错误。错误 500 对于调查问题来说太笼统了。web.config
评论
我第一次尝试发布然后运行一个非常简单的网站,只提供 HTML,结果显示“页面无法显示,因为发生了内部服务器错误。
问题:我在 Visual Studio 中将网站设置为 .NET 3.5(右键单击网站项目 -> 属性页 -> Build),但将 Azure 中的网站配置为 .NET 4.0。哎呀!我在 Azure 中将其更改为 3.5,它起作用了。
我终于解决了在 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。
它奏效了,最后我的问题得到了解决。
评论
500内部错误
Windows Hosting错误
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 中的以下代码是罪魁祸首。当我删除它时,该网站运行良好。
<staticContent>
<mimeMap fileExtension=".mp4" mimeType="video/mp4" />
</staticContent>
评论
如果物理主目录(即IIS_IUSRS无权访问)的权限不足,IIS 还会报告状态代码 500,而没有任何事件日志提示。
除了其他建议之外,请确保将节点的属性更改为 from ,或完全删除该属性。existingResponse
httpErrors
Auto
Replace
<httpErrors existingResponse="Replace" />
^^^^^^^ not going to work with this here
500 内部服务器错误可能由于多种原因而出现。第一个原因可能是 web.config 文件未正确创建,这意味着您错过了 web.config 文件中的某些标记。其次,此错误可能是由于某些代码问题造成的。若要检查 Web 应用程序的哪个组件导致了此错误,可以检查 web.config 文件中的应用程序设置。这里给出了解决和跟踪 500 个内部服务器错误的详细信息:
服务器错误 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>
它解决了我的问题。
评论
<compilation debug="true"
<compilation targetFramework=
确保您的帐户使用 IIS 7。有关详细信息,请参阅自定义 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.
可能您的 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>
有时,原因可能是其中一个 .dll 程序集未在服务器上正确注册。
例如,您可以在安装了 Office 的本地计算机上成功运行 C# Excel Web 应用程序,同时在服务器部署时收到 500 错误,因为服务器上没有安装 Office 套件,因此会出现服务器错误。
我意识到服务器中文件和文件夹的权限也很重要。我从 linux 操作系统上传了我的文件,通常读取和写入的权限受到限制。所以上传时,权限仍然与本地机器相同。
我遇到了同样的错误,我只是更改了我上传的文件夹的权限,错误消失了。
希望它对某人有所帮助。
评论
在更改文件之前,我会检查您使用的版本是否与您的设置(ASP.Net 设置)完全相同(我的意思是,4.5 != 4.5.2)。这应该会自动将您的 web.config 文件更改为正确的框架。
另请注意,目前(1 月 16 日)与 和 一起使用。若要与 Visual Studio 一起使用,它必须是或更高版本,如果不是 2015,则必须下载并安装 .NET Framework 4.5.2 开发人员包。
如果仍然不起作用,那么是的,下一步应该是启用详细的错误报告,以便您可以对其进行调试。web.config
.NET Framework
GoDaddy
Plesk panel
GoDaddy
ASP.Net 3.5
4.5.2
4.5.2
2012
对于那些有这种可能性的人(VPS托管而不是虚拟主机):
通过远程桌面连接到您的托管服务器。从远程桌面打开 Web 浏览器,您将看到错误的详细描述。
无需修改 web.config 或向其他任何人公开任何详细信息。
如果使用的是自定义 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
如果您使用的是 IIS 8.5,则可能需要将 ApplicationPool ID 设置从 ApplicationPoolId 更改为 NetworkService
右键单击有问题的应用程序池,单击“高级设置”,然后向下滚动到 ID - 它可能会设置为 ApplicationPoolIdentity。单击按钮 (..),然后从下拉列表中选择 NetworkService。
此外,请确保如果它是 .NET 2.0 应用程序,则未在应用程序池中引用 4.0 框架。
对于 IIS 10除了更改 customErrors=Off 以显示错误内容之外,还有一个额外的步骤要执行。
<system.web>
<customErrors mode="Off" />
</system.web>
<system.webServer>
<httpErrors existingResponse="PassThrough" errorMode="Detailed"/>
</system.webServer>
Raul 回答了此链接中的问题 关闭 IIS8 自定义错误 by 劳尔
评论
我最近遇到了同样的问题,服务器上的磁盘空间已满。清理一些空间已解决问题。
尝试在调试模式下(在 Visual Studio 中)进行编译。如果您处于发布模式,则许多 URL 重写错误将不可用。
上一个:我可以尝试/捕获警告吗?
评论