gpt4 book ai didi

asp.net - 部署到 IIS 7.5 后出现空白自定义 404 页面

转载 作者:行者123 更新时间:2023-12-03 07:44:38 25 4
gpt4 key购买 nike

不正确的网址,例如 http://localhost:54321/foo/bar和像 HttpNotFound() 这样的错误在我的本地主机中处理没有问题。部署到 IIS 7.5 后,它在上述两种情况下都返回一个空白页面。我见过别人有这个问题Here (这是来自莫尔德的评论,有几个赞成票)。编码:

网页配置

<system.web>
<customErrors mode="Off" redirectMode="ResponseRedirect">
<error statusCode="404" redirect="~/Error/NotFound"/>
</customErrors>
</system.web>
<httpErrors errorMode="Custom" existingResponse="Replace">
<remove statusCode="404" />
<error statusCode="404" responseMode="ExecuteURL" path="/Error/NotFound"/>
<remove statusCode="500" />
<error statusCode="500" responseMode="ExecuteURL" path="/Error/Error"/>
</httpErrors>

错误 Controller
public class ErrorController : Controller
{
public ActionResult NotFound() {
Response.StatusCode = 404;
Response.TrySkipIisCustomErrors = true;
return View();
}
}

路由配置
 routes.MapRoute(
"Error - 404",
"NotFound",
new { controller = "Error", action = "NotFound" }
);

routes.MapRoute(
"Error - 500",
"Error",
new { controller = "Error", action = "Error" }
);
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);

未找到
<h2>404 Not Found</h2>
<div class="alert alert-info">
<p><strong>Whoops...</strong></p>
<p>The resource you were looking for doesn't exist</p>
</div>

该服务器运行 Windows Server 2008 R2。当我转到 .../foo/bar 或操作返回 HttpNotFound() ,它返回一个空白页。任何的想法?

首页/测试
public class HomeController: Controller{
// ...
public ActionResult Test(){
return HttpNotFound();
}
}

更新:
当我去 /Error/NotFound在服务器上,它也返回一个空白页面以及 404。 Fiddler 的响应:
HTTP/1.1 404 Not Found
Cache-Control: private
Content-Type: text/html; charset=utf-8
Server: Microsoft-IIS/7.5
X-AspNetMvc-Version: 5.2
X-AspNet-Version: 4.0.30319
X-SourceFiles: =?UTF-8?B? QzpccWhlXFByb2plY3RzXFZlbmRvclBvcnRhbFxWZW5kb3JQb3J0YWxcRXJyb3JcTm90Rm91bmQ=?=
X-Powered-By: ASP.NET
Date: Thu, 23 Apr 2015 13:24:49 GMT
Content-Length: 5434

更新 2:
如果我拿 existingResponse="Replace"离开,我可以在服务器上打开 Error/NotFound。但在 MyServer/MyProject/foo/bar 上仍然有空白页

最佳答案

在我的情况下,原因在于 IIS - Web 设置 - 请求过滤 - SQL注入(inject)过滤器...

如果 url 或查询字符串包含 ; ,响应以状态 404.19 结束 - 被过滤规则拒绝。然后显示空白页。 IIS 重定向到这样的自定义错误 http://server.com/Error404.aspx?404;http://server.com/missingURL和字符 ;这就是为什么 Request Filter 由于 SQL 注入(inject)而结束您的请求的原因。

关于asp.net - 部署到 IIS 7.5 后出现空白自定义 404 页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29547148/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com