2014-02-11 53 views
0

我在我的开发机器上运行ASP.NET Web Api应用程序时遇到了一个非常奇怪的问题。ASP.NET Web Api HttpResponseException()导致未处理的异常

有问题的代码在ApiController中抛出HttpResponseException。在另一台机器上,此代码按预期工作,并返回400 Bad Request。在我的开发机器上,这个相同的代码中断并且Visual Studio抱怨(HttpResponseException was unhandled by user code)。

在.net API控制器中抛出HttpResponseException是标准做法,所以我想继续使用这种方法(与使控制器返回HttpResponseMessage并创建错误响应)。有没有人遇到过这个问题?

下面是有问题的代码,我删除了所有其他代码,现在它只是抛出异常。

public class SearchController : ApiController 
{ 
    public IEnumerable<Bill> Get() 
    { 
     throw new HttpResponseException(HttpStatusCode.BadRequest); 
    } 
} 

这个代码在一台机器上运行正常,在另一台机器上运行正常(我的开发机器)。有没有一些奇怪的设置,我不小心在Visual Studio中设置来打破默认行为?

+0

你是什么意思“未处理”?它会将自己转换为500状态码吗? –

+0

* unhandled *我的意思是说,当Visual Studio遇到'throw new HttpResponseException'行并且出现标准的异常详细信息对话框,并且标题'HttpResponseException被用户代码未处理'时,它将暂停和暂停调试。返回给浏览器的响应仍然具有400的状态码。 –

回答

1

Yikes,说说PEBCAK。事实证明,我已明确指示Visual Studio打破调试>异常下的这些类型的异常。请参阅附件截图。希望这有助于任何人遇到类似的问题。

enter image description here

+0

FWIW我相信这个Exceptions对话框只适用于更昂贵的Visual Studio版本。例如,Community Edition完全缺少Debug-> Exceptions菜单选项,因此您无法自定义此行为。 – Neek