我希望我的ASP.NET MVC应用程序返回带有代码400的HTTP响应,并将错误描述作为正文。我的代码是:
response.StatusCode = 400;
response.Write("Some error");
response.End();
当我在localhost上测试这段代码时,我得到了预期的结果。但是在远程服务器上,响应文本只包含错误的文本描述,在本例中为“错误请求”。
Web服务器 - IIS7,locahost意味着我从远程本地计算机访问远程。
答案 0 :(得分:1)
答案很简单:
response.TrySkipIisCustomErrors = true;
答案 1 :(得分:0)
当你说“localhost”是指在VS中调试时使用的Cassini开发Web服务器吗?
您要部署的服务器是IIS6吗?默认情况下,它会捕获400并发送自己的响应。我不确定有没有办法可以防止它这样做(你可能会使用MetaBase,但我不确定)。您可以在发送此代码时在网站中指定要执行的网址。
那说你为什么使用400而不是简单地抛出异常? 400像SOAP这样的协议有点滥用,它将一个格式错误的HTTP请求的含义扩展到应用程序中,但这是边界线,因为SOAP也是一个传输包络。
但是,如果我的应用程序已接受请求然后发回400响应,我觉得很奇怪,您通常会在500上发送变体。