ServiceStack 不同的 ServiceClients 有相同的错误处理程序
ServiceStack different ServiceClients have same error handlers
在我的代码中有 2 个 ServiceClients
var client = new ServerEventsClient(baseUrl, "home")
{
OnConnect = OnConnect,
OnCommand = HandleIncomingCommand,
OnMessage = HandleIncomingMessage,
OnException = OnException,
OnHeartbeat = OnHeartbeat
};
和
var jsonClient = new JsonServiceClient(baseUrl);
string publicKeyXml = jsonClient.Get(new GetPublicKey());
var cryptoClient = jsonClient.GetEncryptedClient(publicKeyXml);
注意第一个中的 OnException 处理程序。令人困惑的部分是,当 cyptoClient 抛出错误时,它会被第一个客户端的 OnException 处理程序处理。这是它应该如何工作吗?我没有为第二个客户端设置任何异常处理程序,因为没有这样做的选项。
这不是一个有效的结论,ServerEventsClient.OnExceptionReceived()
仅在 4 个位置被调用:
- 当 Heartbeat Times out
- 当periodic Heartbeat request fails
- 当有 error reconnecting the ServerEventsClient
- 当有 error reading from the EventStream
您可能认为它们是相关的,因为您的 ServiceClient 请求可能导致服务器事件流连接中出现异常,但是如果 ServiceClient 请求出现异常,它将从调用站点抛出,即:
try
{
client.Get(request);
}
catch(WebServiceException ex) { ... }
在我的代码中有 2 个 ServiceClients
var client = new ServerEventsClient(baseUrl, "home")
{
OnConnect = OnConnect,
OnCommand = HandleIncomingCommand,
OnMessage = HandleIncomingMessage,
OnException = OnException,
OnHeartbeat = OnHeartbeat
};
和
var jsonClient = new JsonServiceClient(baseUrl);
string publicKeyXml = jsonClient.Get(new GetPublicKey());
var cryptoClient = jsonClient.GetEncryptedClient(publicKeyXml);
注意第一个中的 OnException 处理程序。令人困惑的部分是,当 cyptoClient 抛出错误时,它会被第一个客户端的 OnException 处理程序处理。这是它应该如何工作吗?我没有为第二个客户端设置任何异常处理程序,因为没有这样做的选项。
这不是一个有效的结论,ServerEventsClient.OnExceptionReceived()
仅在 4 个位置被调用:
- 当 Heartbeat Times out
- 当periodic Heartbeat request fails
- 当有 error reconnecting the ServerEventsClient
- 当有 error reading from the EventStream
您可能认为它们是相关的,因为您的 ServiceClient 请求可能导致服务器事件流连接中出现异常,但是如果 ServiceClient 请求出现异常,它将从调用站点抛出,即:
try
{
client.Get(request);
}
catch(WebServiceException ex) { ... }