到今天为止,我有一些时间进行研发,并且一直在玩 OWIN。
我希望为所有数据交互运行一个 OWIN WebAPI 服务,以及一个使用 Angular 的单独的 Web 前端 SPA 项目。
所有代码都是从各种随机博客文章中无耻地窃取的,只是为了掌握这种“新技术”。
启动
public class Startup
{
public void Configuration(IAppBuilder app)
{
#if DEBUG
app.UseErrorPage();
#endif
app.UseWelcomePage("/");
// Configure Web API for self-host.
HttpConfiguration config = new HttpConfiguration();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
app.UseWebApi(config);
app.Run(context =>
{
if (context.Request.Path.ToString() == "/fail")
{
throw new Exception("Random exception");
}
context.Response.ContentType = "text/plain";
return context.Response.WriteAsync("App Init");
});
}
}
账户控制器
public class AccountsController : ApiController
{
// GET api/<controller>/5
public string Get(int id)
{
throw new Exception("Random exception");
}
}
如果我导航到 [http://localhost:85/fail],我会看到一个非常性感的错误页面。
但是当我点击[http://l0calhost:85/api/accounts/5]时,错误被暴露为 json/xml。
- 有什么方法可以强制 API 控制器异常也使用 AppBuilder 错误机制?
- 这会被人反对吗?(感觉有点脏……)