我创建了一个运行良好的 MVC (4) Web API。它有一个简单的登录方法,当找不到用户时会抛出异常。
除了 API,我还创建了一个简单的网站,通过 HttpClient 调用 API:
public T ExecutePost<T>(string apiUrl, IEnumerable<KeyValuePair<string, string>> postData) {
HttpContent content = null;
if (postData != null)
content = new FormUrlEncodedContent(postData);
var a = _client.PostAsync(apiUrl, content).ContinueWith(httpResponseMessage =>
JsonConvert.DeserializeObject<T>(httpResponseMessage.Result.Content.ReadAsStringAsync().Result)
);
return a.Result;
}
您可以将此方法称为
ExecutePost<User>("url_to_controller_action_api", list_with_keys_and_values_to_post)
当此方法使用 postData-fiels 用户名和密码(两者都是正确的并且系统已知)调用 API 时,将返回一个名为 User 的对象......就像一个魅力。当我使用错误的用户名和/或密码调用此方法时,API 会引发异常(未找到用户),但 ExecutePost 方法也会引发异常,并且网页会显示一个漂亮的、黄色的、红色的字母页面普通用户无法理解的错误。原因很简单:API 传回的数据与对象 User 中可以放入的数据不一样。
所以,我想做的是从 API 反序列化异常,在一个名为 Error 的对象中,并将其返回给 MVC 网站的控制器,这样我就可以将错误“找不到用户”放在正确的页面上网站的设计。
做这个的最好方式是什么?尝试捕捉所有动作?我觉得不对...所以建议非常受欢迎。
我发现的大多数东西都是 API 端的东西,但我想在站点端获取和处理异常。
提前致谢