如何在ServiceStack中显示自定义错误页面

时间:2015-10-20 16:34:38

标签: exception razor view servicestack

我已阅读Error Handling,ServiceStack_Succinctly.pdf,ServiceStack 4 Cookbook以及各种SO问题,但我仍然无法完成以下工作。

我想要一种方式来展示我自己的"漂亮"任何我的服务中引发的任何异常的错误页面。如果抛出任何异常,我想将用户带到一个友好的页面,显示错误消息,而没有任何信息,只有凡人和#34;不明白。

理想情况下,我希望在维护服务请求的类型响应时保持这一点,即

var topicFieldID = new ID(RelatedTopic.FieldIDs.Topics); //getting the field ID

var changes = Event.ExtractParameter<ItemChanges>(args, 1); //in item:saved event handler

var oldIDs = changes.FieldChanges[topicFieldID]?.OriginalValue?.ToString().Split('|');
var newIDs = changes.FieldChanges[topicFieldID]?.Value?.ToString().Split('|');

而是

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

我非常感谢如何使这项工作得到指导,或者这样做的例子。

感谢。

1 个答案:

答案 0 :(得分:1)

查看Fallback Error Pages的选项,例如您可以显示/oops.cshtml Razor页面:

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");
}