在UserNamePasswordValidator故障后无法在VS2008中调试WCF服务

时间:2009-07-20 15:04:05

标签: c# wcf

我有一个WCF服务,我使用自定义UserNamePasswordValidator和在wsHttpBinding上运行的Message安全性来保护。发布代码非常有用。不幸的是,当我尝试在先前使用无效凭证(当前凭证有效!)后以调试模式运行时,VS2008会显示一个恼人的对话框(下面有更多内容)。

验证程序的验证方法的简化版本可能如下所示:

    public override void Validate(string userName, string password)
    {
        if (password != "ABC123")
            throw new FaultException("The password is invalid!");
    }

客户端收到MessageSecurityException,并将InnerException设置为我明确抛出的FaultException。这是可行的,因为我的客户端可以显示我希望用户看到的原始FaultException的消息文本。

不幸的是,在所有后续服务调用中,VS2008显示“无法自动调试...”对话框。我可以阻止这种情况发生的唯一方法是退出VS2008,重新进入并使用正确的凭据连接到我的服务。我还要补充一点,即使我在每次通话中都创建了一个全新的代理,也会发生这种情况。当我打电话时,我的频道没有机会出现故障。但是,VS2008可能会挂起以前出现故障的通道,并尝试将其用于调试目的。

毋庸置疑,这很糟糕!我输入“坏”凭证的全部原因是测试“坏凭证”处理。

无论如何,如果有人对如何解决这个错误有什么想法(?!?)我会非常感激....

1 个答案:

答案 0 :(得分:0)

我开始认为问题与代理关闭有关。我刚刚看到来自Michele Leroux Bustamante(http://wcfguidanceforwpf.codeplex.com)的一组优秀的WCF视频让我觉得问题可能出在我的客户端代码中。今天我会试一试,并报告它是如何做的......