我想抛出自定义异常,如一些错误消息作为WCF Web服务的异常,并在客户端应用程序中尝试接收此异常错误消息调用Web服务方法.
如何从WCF Web服务抛出自定义异常并在客户端收到相同的异常错误.
WCF Web服务方法:
public bool Read()
{
if (IsUserValid() == false)
{
throw new Exception("Authorized user");
}
}
Run Code Online (Sandbox Code Playgroud)
在客户端
try
{
_client.Read();
}
catch (Exception e)
{
MessageBox.Show(e.Message);
return;
}
Run Code Online (Sandbox Code Playgroud)
结果:始终将错误消息作为例外**即
"System.ServiceModel.FaultException:由于内部错误,服务器无法处理请求.有关错误的更多信息,请在服务器上启用IncludeExceptionDetailInFaults(来自ServiceBehaviorAttribute或配置行为)以发送异常信息返回到客户端,或根据Microsoft .NET Framework 3.0 SDK文档打开跟踪并检查服务器跟踪日志."
这是代码抛出异常但不返回与从WCF Web服务抛出的异常错误相同的错误消息
请建议
我有一个由C#客户端应用程序使用的WCF Web服务,我还有4个组存储在Active Directory中.客户端应用程序应通过传递登录凭据来连接此Web服务.
需求:
题:
如何在连接到此Web服务时对登录用户进行身份验证或验证,将调用哪个事件处理函数来验证登录的用户凭据.
如果有人知道这个,请告诉我
我有一个由 C# 客户端应用程序使用的 WCF Web 服务。我还在 Active Directory 中存储了 4 个组。客户端应用程序正在传递用户凭据以连接此 Web 服务。
Web 服务公开多个 API 或方法供客户端应用程序访问,如下所示:
[OperationContract]
bool Read();
[OperationContract]
bool Write();
Run Code Online (Sandbox Code Playgroud)
Read() 方法应该可供所有客户端访问
只有属于 Active Directory 维护的特定 Windows 用户组的用户才能访问 Write() 方法。
问题:我们如何根据客户端在 AD 中维护的用户组来过滤或限制客户端暴露的接口或方法?
jrista,感谢您的回复。我尝试了与 PrincipalPermission 相同的指令,如下所示:
[PrincipalPermission(SecurityAction.Demand, Role = "Readers")]
[OperationContract]
bool Read();
[PrincipalPermission(SecurityAction.Demand, Role = "Writers")]
[OperationContract]
bool Write();
Run Code Online (Sandbox Code Playgroud)
但它不起作用。Read 组用户也可以调用 Writer() 方法,Writer 组用户也可以调用 Write() 方法。
我想告诉你的一件事是,我在 web.config 文件中使用 BasicHttpBind,如下所示:
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="BasicHttpBind">
<security mode="TransportCredentialOnly">
<transport clientCredentialType="Windows" proxyCredentialType="Windows" />
</security>
</binding>
</basicHttpBinding>
</bindings>
<services> …Run Code Online (Sandbox Code Playgroud)