我的MVC5网站托管在IIS 8.5(Azure VM)中。
出于某种原因,我的POST
请求代码在使用Firefox或Chrome时有效。但是在使用Internet Explorer或Microsoft Edge时使用HTTP 500(内部服务器错误)进行响应!
之前的网站'是一个应用程序'位于默认网站下,在开发阶段,它正在运行。一旦我将其作为网站移动,POST代码就不再有效了!
需要注意的是,在Visual Studio中使用任何这些浏览器运行代码时效果很好!
我花了一天时间调查并试图让它发挥作用。任何人都可以看到代码是否有任何问题,或者我在IIS中遗漏了什么?
以下代码被剥夺了它的绝对最低限度,问题仍在发生......
查看
<div class="col-md-12">
@using (Html.BeginForm("Test", "Home", FormMethod.Post))
{
@Html.AntiForgeryToken()
<div class="form-group">
<div class="col-md-offset-2 col-md-10">
<input type="submit" value="Click Me" class="btn btn-primary" />
</div>
</div>
}
</div>
控制器
[HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public ActionResult Test()
{
// Striped down code to 1 line that can't go wrong!
return RedirectToAction("About");
}
路线配置
非常默认......
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
错误页面
今天(2015年8月8日)解决了这个问题。只需添加/Shared/Error.cshtml即可解析丢失的错误页面。请注意为什么这样:
<error statusCode="500" path="/Error/ServerError" responseMode="ExecuteURL" />
不会处理所有500个错误。我(显然)读到HandleError属性需要/Shared/Error.cshtml页面。
我无法获得500错误的根本原因。我只得到标准的500错误详细信息页面只是建议可能是什么问题。 任何人都知道如何获得例外原因?