WCF错误契约问题

lqs0112 2012-03-31 03:08:15
服务端代码
[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerSession)]
public class BaseInfoService : IBaseInfoContract
{
int i = 0;

[OperationBehavior]
public int FaultTest(int num)
{
int returnValue = 0;

try
{
returnValue = 100 / num;
}
catch (Exception ex)
{
FaultException fault = null;

if (ex is DivideByZeroException)
{
fault = new FaultException(new FaultReason("产生了除0异常"), new FaultCode("Error:ox001"));
}
else
{
fault = new FaultException(ex.Message);
}

throw fault;
}

return returnValue;
}

客户端代码
BaseInfoContractClient baseInfoClient = new BaseInfoContractClient();

while (true)
{
string str = Console.ReadLine();
int num = int.Parse(str);

try
{
int result = baseInfoClient.FaultTest(num);
Console.ForegroundColor = ConsoleColor.Cyan;
Console.WriteLine(DateTime.Now.ToString() + "得到运算结果:" + result);
}
catch (FaultException ex)
{
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine(DateTime.Now.ToString() + "产生异常:错误代号-" + ex.Code.Name
, "错误原因-" + ex.Reason);
}
catch (Exception ex)
{
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine(DateTime.Now.ToString() + "产生异常:" + ex.Message);
}
finally
{
Console.ResetColor();
}
}
输入0,运行结果:2012-03-31 15:09:22产生异常,Server returned an invalid SOAP Fault.Please see InnerException from more details.

请教高手,为什么不能返回我服务端定义的“产生了除0异常”的信息?

...全文
132 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
qldsrx 2012-04-01
  • 打赏
  • 举报
回复
你可以添加[ServiceBehavior(IncludeExceptionDetailInFaults = true)]
多个属性用逗号隔开,例如:
[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerSession,IncludeExceptionDetailInFaults = true)]

也可以在配置文件中或者服务启动代码中指定该属性。
lqs0112 2012-04-01
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]
return returnValue;

你客户端只能得到这个值 怎么可能返回到错误信息呢
通常我是返回STRING 如果是数字型的证明返回成功 否则这里返回错误信息
[/Quote]

不是吧,这样的不就抛弃了错误契约,相当于在服务端自己捕获异常,抛出封装对象,里面包含成功失败和失败的错误信息了么。
www7788softcom 2012-03-31
  • 打赏
  • 举报
回复
return returnValue;

你客户端只能得到这个值 怎么可能返回到错误信息呢
通常我是返回STRING 如果是数字型的证明返回成功 否则这里返回错误信息
lqs0112 2012-03-31
  • 打赏
  • 举报
回复
现在用WCF的人很少么?

110,557

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧