2009-08-28 69 views
1

我想让我的ASP.NET MVC应用程序返回带有代码400的HTTP响应以及错误的描述。我的代码是:asp.net如何更改错误响应?

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

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

  1. 您能解释一下这种行为吗?
  2. 这是什么解决方案?

Web服务器 - IIS7,locahost意味着我从本地计算机访问远程 - 从远程访问。

+0

'普通民宅请求' 或 '错误的请求'? – rahul 2009-08-28 11:13:44

+0

@phoenix,谢谢,修复了 – 2009-08-28 11:17:51

+0

远程服务器版本? – AnthonyWJones 2009-08-28 11:38:43

回答

0

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

您要部署到的服务器是IIS6?默认情况下它会陷阱400并发送自己的响应。我不确定有什么办法可以阻止它这样做(你可能会用MetaBase搞砸,但我不确定)。您可以在您发送此代码时要执行的页面的站点中指定一个URL。

这就是说,你为什么使用400,而不是简单地抛出异常? 400被诸如SOAP之类的协议所滥用,它将不良形式的HTTP请求的含义扩展到应用程序中,但这是边界线,因为SOAP也是一个传输包络。

然而,我有一个接受请求然后发回400响应的应用程序似乎很奇怪,您通常会发送500上的变体。

+0

对不起,我没有指定Web服务器,本地和远程我使用IIS7。 – 2009-08-28 11:41:50

1

答案很简单:

response.TrySkipIisCustomErrors = true; 
+1

虽然这只适用于IIS 7+。 – 2009-08-28 12:19:43

+0

是的,这是一个烦人的肛交。 – 2010-07-02 01:11:40