【发布时间】:2016-05-27 17:40:37
【问题描述】:
我一直在使用 stackoverflows,但似乎无法解决我遇到的这个问题。
我正在尝试为我编写的一个小应用程序编写一个错误报告服务,该应用程序访问我的内部 api 并引发异常并将其通过电子邮件发送给我。
正如我的代码一样,我什至无法访问 API 控制器。我的请求返回 500 错误,并且我在控制器上设置的断点永远不会被命中。
这里是 api 控制器(ErrorController.cs):
[HttpPost]
// POST: api/Error
public HttpResponseMessage Post([FromBody]Exception err)
{
var result = _service.SendEmail(err);
return Request.CreateResponse(result, err);
}
及其在 WebApiConfig.cs 中的配置:
config.Routes.MapHttpRoute(
name: "ErrorApi",
routeTemplate: "api/error",
defaults: new { controller = "error" }
);
我试图在服务中调用它,在 catch 块中:
catch (Exception err)
{
using (var client = new HttpClient())
{
client.BaseAddress = new Uri("http://localhost:61857/");
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
var response = client.PostAsJsonAsync("api/error", err).Result;
}
return null;
}
我有什么明显的遗漏吗?我有点不确定如何正确地将异常作为 JSON 对象发送,然后将其传递到我的电子邮件服务中。我想这可能是我搞砸的地方。
提前感谢您的帮助! :)
【问题讨论】:
-
你的方法叫做 Post,而不是 Error。你的路线认为它应该是错误的。让你的名字同意,你应该没问题。
-
我在 webapiconfig 中指定了控制器。我的其他控制器的配置和调用方式相同,我使用这种路由访问它们的 get 方法:“api/{controller}/{id}”。您实际上并没有将方法名称放在 webapi 中的路由中
标签: c# json rest asp.net-web-api