我有一个分布式服务器应用程序。
客户端连接到从属服务器并调用传播到主服务器的方法。主服务器抛出FaultException<CustomFault>()
。
从服务器然后将FaultException<CustomFault>()
传播到连接的客户端。但客户端会收到非通用的FaultException
。
如果我在从属服务器上捕获并重新抛出它(在FaultException<CustomFault>
创建一个新实例),它将按预期工作:
protected void Rethrow(Action action)
{
try
{
action();
}
catch (FaultException<CustomFault> kEx)
{
throw new FaultException<CustomFault>(kEx.Detail);
}
}
因此我假设我的所有接口都正确装饰。我只能假设microsoft认为通过多个服务器抛出FaultExceptions被认为是一个安全问题......
如何识别从其他服务器抛出FaultException?检查调用堆栈:
Server stack trace:
at System.ServiceModel.Channels.ServiceChannel.HandleReply(ProxyOperationRuntime operation, ProxyRpc& rpc)
at System.ServiceModel.Channels.ServiceChannel.Call(String action, Boolean oneway, ProxyOperationRuntime operation, Object[] ins, Object[] outs, TimeSpan timeout)
at System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCallMessage methodCall, ProxyOperationRuntime operation)
at System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage message)
对我来说似乎不对。有更好的想法吗?
答案 0 :(得分:0)
如果其他人有同样的问题:
如果FaultException
来自远程来源 - Action
属性会显示该服务!