Skip to main content
 首页 » 编程设计

c#之Web API 总是返回内部服务器错误而不是我抛出的错误

2024年04月17日34qlqwjy

我正在使用 HttpClient 调用此 Web API

using (var client = new HttpClient(new HttpClientHandler() { Credentials = _credentials })) 
            { 
                client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));                     
                return await client.PostAsJsonAsync(controlActionPath, entityObject); 
            } 

我抛出以下错误的 Web API Controller :

throw new DuplicateNameException("User already exists."); 

但是网络应用程序总是收到内部服务器错误而不是 DuplicateNameException。

如果有人建议什么是从 Web API 将确切异常返回到 Web 应用程序的最佳方法,这将很有帮助。

请您参考如下方法:

因为你抛出一个异常,它会自动变成一个内部服务器错误,因为它仍然在你的内部服务器端代码中。您可以创建一个异常处理程序,如 this answer或者您可以抛出特定的 HttpResponseException 类型,详见 Web API documentation on exception handling :

var response = new HttpResponseMessage(HttpStatusCode.BadRequest) 
{ 
  ReasonPhrase = "User already exists." 
}; 
 
throw new HttpResponseException(response);