从Visual Studio UI添加引用后,我初始化了客户端:
private WcfRequestProcessorClient _client;
var binding = new BasicHttpBinding();
binding.Security.Mode = BasicHttpSecurityMode.TransportCredentialOnly;
string serviceFullUrl = "http://myserviceurl.com/svcapi";
var address = new EndpointAddress(serviceFullUrl);
_client = new WcfRequestProcessorClient(binding, address);
_client.ClientCredentials.UserName.UserName = "MyUserName";
_client.ClientCredentials.UserName.Password = "MyPassword";
之后,我将请求作为参数调用相关方法:
try
{
var itemsReq = LoadItemsRequest();
_client.ProcessRequestsAsync(itemsReq);
}
catch(Exception)
{
// source code for show an error in a popup
}
现在,当网址,用户名和密码正确时,一切正常。但如果网址,用户名或密码错误,应用程序中断,Visual Studio会在调试时显示此窗口,跳过我的阻止:
处理这类异常的方法是什么?
答案 0 :(得分:0)
需要配置服务以将真实的异常传播给您。
如果你不知道你所陈述的实际原因,它会如何表示抛出异常。 '被抛出的异常
未捕获异常的原因是该调用是异步的。
即。异常被抛出在另一个堆栈上,然后是你调用它的那个。
如果它返回一个Task,你需要等待它。
如果它是APM风格的异步性,你必须提供一个回调并尝试在那里捕获它。
此外,您可以注册AppDomain.UnhandledException以最终捕获此异常。
答案 1 :(得分:0)
catch(Exception e)
{
MessageBox.Show(e.Message.ToString());
}
希望这会有所帮助。 对于Advance异常抛出,请参阅WCF中的FaultException。它专为面向服务的体系结构而设计。