2015-10-20 102 views
1

我已阅读Error Handling,ServiceStack_Succinctly.pdf,ServiceStack 4 Cookbook和各种SO问题,但仍无法获得以下工作。如何在ServiceStack中显示自定义错误页面

我想要一种方法来显示我自己的“漂亮”错误页面,以查看任何服务中抛出的异常。如果抛出任何异常,我想让用户访问一个友好的页面,显示错误消息,但没有任何“单纯的凡人”无法理解的信息。

理想我想这一点的同时保持对我的服务请求的响应类型,即

public object Get(GetOrder request) 
{ 
    return new GetOrderResponse() 
      { 
       ... 
      } 
} 

而是

public GetOrderResponse Get(GetOrder request) 
{ 
    return new GetOrderResponse() 
      { 
       ... 
      } 
} 

我会很感激如何得到这个工作的指导或者这是完成的一个例子。

谢谢。

回答

1

查看Fallback Error Pages的选项,例如您可以显示一个/oops.cshtml剃刀页:

public override void Configure(Container container) 
{ 
    Plugins.Add(new RazorFormat()); //Register ServiceStack.Razor Plugin 

    this.GlobalHtmlErrorHttpHandler = new RazorHandler("/oops"), 
} 

或为更细粒度的控制,使用IAppHost.CustomHttpHandlers用于指定自定义HttpHandlers的特定错误状态码使用,如:

public override void Configure(Container container) 
{ 
    this.CustomHttpHandlers[HttpStatusCode.NotFound] = 
     new RazorHandler("/notfound"); 
    this.CustomHttpHandlers[HttpStatusCode.Unauthorized] = 
     new RazorHandler("/login"); 
} 
+0

我已经试过这。我从来没有看到我的“错误”页面。它被称为Error.cshtml,它位于我的服务的根目录中,而不是在Views文件夹中。如果我在响应DTO上输入“public ResponseStatus ResponseStatus {get; set;}”,则按预期显示“Order”页面,并按照文档 - 我已添加代码以检查ResponseStatus。如果我删除了属性,但是我得到了标准的SS json页面,而不是我期望的错误页面。 –

+0

@GerhardWessels看起来好像它没有回落到服务异常中的Global Html ErrorHandler,它现在应该[从此提交](https://github.com/ServiceStack/ServiceStack/commit/b2f24c0cdf2a0e2bd5fc5e09f8a184566f046475)可用从v4.0.47现在[MyGet上可用](https://github.com/ServiceStack/ServiceStack/wiki/MyGet)。 – mythz

相关问题