asp.net在何处以及为何更改错误响应?

时间:2009-08-28 11:10:55

标签: asp.net-mvc http

我希望我的ASP.NET MVC应用程序返回带有代码400的HTTP响应,并将错误描述作为正文。我的代码是:

response.StatusCode = 400;
response.Write("Some error");
response.End();

当我在localhost上测试这段代码时,我得到了预期的结果。但是在远程服务器上,响应文本只包含错误的文本描述,在本例中为“错误请求”。

  1. 你能解释一下这种行为吗?
  2. 这是什么解决方案?
  3. Web服务器 - IIS7,locahost意味着我从远程本地计算机访问远程。

2 个答案:

答案 0 :(得分:1)

答案很简单:

response.TrySkipIisCustomErrors = true;

答案 1 :(得分:0)

当你说“localhost”是指在VS中调试时使用的Cassini开发Web服务器吗?

您要部署的服务器是IIS6吗?默认情况下,它会捕获400并发送自己的响应。我不确定有没有办法可以防止它这样做(你可能会使用MetaBase,但我不确定)。您可以在发送此代码时在网站中指定要执行的网址。

那说你为什么使用400而不是简单地抛出异常? 400像SOAP这样的协议有点滥用,它将一个格式错误的HTTP请求的含义扩展到应用程序中,但这是边界线,因为SOAP也是一个传输包络。

但是,如果我的应用程序已接受请求然后发回400响应,我觉得很奇怪,您通常会在500上发送变体。