我在使用 Windows 2008 服务器 IIS时遇到500 - 内部服务器错误。PUT/DELETE
我得到的回应是:
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
<title>500 - Internal server error.</title>
<style type="text/css">
<!--
Formatting
-->
</style>
</head>
<body>
<div id="header"><h1>Server Error</h1></div>
<div id="content">
<div class="content-container"><fieldset>
<h2>500 - Internal server error.</h2>
<h3>There is a problem with the resource you are looking for, and it cannot be displayed.</h3>
</fieldset></div>
</div>
</body>
</html>
当我检查我的 WebAPI 的自定义日志时,我发现调用甚至没有命中服务。
我之前的经验是404 - Not Found for PUT
andDELETE
并且这种行为在 Win7 和 Win 2008 Server 中是一致的。为此,我找到了这个修复:
我应用了修复程序并PUT/DELETE
在 Windows 7 上工作。但之后,当在 win2008 服务器的 IIS 7 上部署相同的服务时,我没有得到 400。但我从 IIS 或之前得到“500 - 内部服务器错误” 。
相同的代码在 Windows 7 (IIS 7.5) 上完美运行。
有关解决此类问题的任何线索?
2012 年 8 月 29 日编辑:
通过在 IIS7 中启用故障跟踪来检测500-Internal Server Error的问题。修复就是这个配置。
<modules runAllManagedModulesForAllRequests="true">
<remove name="WebDAVModule" />
</modules>
<handlers>
<remove name="WebDAV" />
</handlers>
基本上我们需要从模块中删除“WebDAVModule”,并从处理程序中删除“WebDAV”。但现在我又回到了我的旧问题404-Not Found。现在,即使在进行了以下配置后,我也无法让 PUT/DELETE 工作:
<remove name="ExtensionlessUrlHandler-Integrated-4.0" />
<add name="ExtensionlessUrlHandler-Integrated-4.0" path="*" verb="GET,HEAD,POST,DEBUG,PUT,DELETE" type="System.Web.Handlers.TransferRequestHandler" resourceType="Unspecified" requireAccess="Script" preCondition="integratedMode,runtimeVersionv4.0" />
不同寻常的是,相同的 Web 应用程序可以在同一系统相同的 IIS 上单独托管(不在默认网站下)完美运行。所以我怀疑这是由于某些父网站配置过滤了 PUT/DELETE 请求。
有同样的想法吗?