C#signalR发出请求失败

时间:2016-09-21 14:37:22

标签: c# exception-handling signalr

所以我有一个我自己构建的自定义管道,因为我的整个程序没有捕获任何异常(在purpese上)我想在比Hub更高的级别捕获它们。

我的public sealed class CommonPipelineModule : HubPipelineModule包含方法public override Func<IHubIncomingInvokerContext, Task<object>> BuildIncoming(Func<IHubIncomingInvokerContext, Task<object>> invoke)

代码如下:

public sealed class CommonPipelineModule : HubPipelineModule
{
    public override Func<IHubIncomingInvokerContext, Task<object>> BuildIncoming(Func<IHubIncomingInvokerContext, Task<object>> invoke)
    {
        return base.BuildIncoming(async context =>
        {
            Func<Task<object>> myInvoker = async () =>
            {
                try
                {
                    return await invoke(context);
                }
                catch (Exception e)
                {
                    return new FailureResponseObject(e as dynamic, e.Message);
                }

            };
            return await myInvoker();
        }
    }
}

FailureResponseObject知道如何处理异常并创建一个客户更熟悉的对象。

问题是:我希望客户端在fail回调而不是success回调中接收对象。

所以我想我可以抛出异常而不是返回自定义对象来获取fail回调,但是我想在我的管道中处理这个而不是在某个上层。

我正在寻找一些上下文状态更改或类似的东西,可能就像更改HTTP请求中的http响应代码一样。

有这篇文章:Call .fail(error) without throwing exception但也许2年之后在Signalr 2.0中发生了一些变化(我正在使用它)

0 个答案:

没有答案