- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我有一个 WCF 服务通过我的 web.config 连接了一个 UserNamePasswordValidator,没问题。在我的验证器中,我覆盖了 Validate,检查凭据并在必要时抛出 FaultException。
例子:
public class CredentialValidator : UserNamePasswordValidator
{
public override void Validate(string userName, string password)
{
if (userName != "dummy")
{
throw new FaultException<AuthenticationFault>(new AuthenticationFault(), "Invalid credentials supplied");
}
}
}
如果我自己在 .NET 应用程序中使用此服务并提供无效凭据,则会抛出 MessageSecurityException 并显示以下消息:
“从另一方收到了不安全或不正确的安全错误。有关错误代码和详细信息,请参阅内部 FaultException。”
我预期的 FaultException 是 MessageSecurityException 的 InnerException。
有没有办法让客户端只接收 FaultException?
MessageSecurityException 并没有特别描述异常的真正原因(对 SO 的快速搜索会产生各种问题,包括服务器/客户端时间同步..),并且由于第三方将使用该服务,我希望尽可能清楚。
最佳答案
几个月前我遇到了同样的问题,经过一些研究后我得出结论,你可以从验证器代码中抛出任何你想要的东西,但客户端仍然会得到 MessageSecurityException,它根本不包含任何有用的信息。
但是,我们必须让客户知道实际发生了什么 - 1.用户名/密码错误 2.密码过期,需要更改 3. 其他一些自定义应用程序特定状态
因此,我们更改了 CredentialValidator 逻辑,使其仅在情况 1 中抛出异常。在其他情况下,它实际上允许调用真正的 WCF 方法,但我们也会检查密码过期等,以及在以下情况下一些问题已经从方法主体抛出 FaultException。
在我们的例子中,这只适用于使用这种类型的验证的服务是登录服务 - 所以客户总是知道为什么他没有通过身份验证。
关于c# - UserNamePasswordValidator 可以抛出 MessageSecurityException 以外的任何东西吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8594265/
我已经坚持了好几天了……很抱歉遇到这样的问题,但是我只是F#本身的初学者。由于关于类型提供程序的讨论很多,所以我决定建立一个类型提供程序并撰写一篇有关它的论文。当我开始时,我不知道什么是类型提供程序。
我正在开发LAN项目唤醒功能,但是我想控制局域网中计算机是否打开。但是我不想使用ICMP或WMI(我的网络上有DC)。那么,对于此问题,是否还有其他选择,例如“套接字连接”,请检查特定端口是否正在使用
我们有一个旧的VB6应用程序,该应用程序使用Crystal Reports XI生成打印报告。我们已经通过经验发现,如果Crystal Reports打印引擎选择了错误版本的 usp10.dll (W
我正在尝试获取有效的 Android 权限列表。我知道 http://developer.android.com/reference/android/Manifest.permission.html
嗨,我是 nginx 的新手,我试图在我的服务器(运行 Ubuntu 4)上设置它,它已经运行了 apache。 所以在我 apt-get install 它之后,我尝试启动 nginx。然后我收到这
如何在VB 6中检查对象的类型-除了'TypeName'之外,是否还有其他方法,因为无法通过'TypeName'进行检查,我希望使用类似QuichWatch窗口的方法。 最佳答案 对于对象变量,请使用
我的 JSP 应用程序中有一个错误。发布后我的 session 被清除: YAHOO.util.Connect.asyncRequest('POST', Url, callback, post
我是一名优秀的程序员,十分优秀!