Asp.net web api Katana/OWIN调试与维护;app.UseErrorPage

Asp.net web api Katana/OWIN调试与维护;app.UseErrorPage,asp.net-web-api,owin,katana,Asp.net Web Api,Owin,Katana,我有一些时间做研发工作,从今天起我一直在和奥文玩 我想让OWIN WebAPI服务为所有数据交互运行, 以及一个单独的Web前端SPA项目,利用angular 所有的代码都是无耻地从各种各样的随机博客帖子中盗取的,这只是为了应对这种“新技术” 启动 public class Startup { public void Configuration(IAppBuilder app) { #if DEBUG app.UseErrorP

我有一些时间做研发工作,从今天起我一直在和奥文玩

我想让OWIN WebAPI服务为所有数据交互运行, 以及一个单独的Web前端SPA项目,利用angular

所有的代码都是无耻地从各种各样的随机博客帖子中盗取的,这只是为了应对这种“新技术”

启动

  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");
    }
}
公共类帐户控制器:ApiController
{   
//获取api//5
公共字符串Get(int-id)
{
抛出新异常(“随机异常”);
}
}
如果我导航到 [http://localhost:85/fail]我看到一个非常性感的错误页面

但是当我点击[http://l0calhost:85/api/accounts/5],错误以json/xml的形式公开

  • 有没有办法强制API控制器异常也使用AppBuilder错误机制
  • 这会让人不高兴吗?(感觉有点脏……)
  • 目前(5.0版)Web API无法强制内部发生的异常在管道中进一步传播。正如您所注意到的,它当前将异常转换为包含json/xml内容的http响应消息。然而,在即将发布的版本中,我们将提供此功能作为我们的全局错误处理功能的一部分,您可以在其中插入错误处理机制


    IMO看到Web API错误的错误页面不是很有用。如果您的客户端是进行这些调用的Javascript,那么应该如何显示此html?。此外,目前浏览器具有良好的调试支持,您可以跟踪调用并从响应中找出问题。

    这纯粹是为了“嘿,看看这些天有什么样的演示类型”。太棒了,是的,我们认为这对API消费者来说可能很奇怪。。。但一旦这个想法在我脑海中形成,我想看看它是否可行。非常感谢你!