【问题标题】:"WCF Getting Started" MSDN Tutorial Problem《WCF入门》MSDN教程问题
【发布时间】:2009-01-18 08:01:29
【问题描述】:

可能已找到原始问题(如下)的解决方案。我注释掉了

<identity> 
    ...
</identity>

客户端的 app.config 文件中的标记。但是我不确定这是否会导致其他问题,如果确实如此,有人可以告诉我吗?


我一直在关注 WCF 的 MSDN 上的 Getting Started tutorial

我在 Vista x64 上使用 Visual Studio.net 2008。服务程序运行良好。但是,客户端遇到了问题。

当我运行客户端时,我得到了这个异常:

SecurityNegotiationException 未处理 SOAP 安全协商 'http://localhost:8000/ServiceModelSamples/Service/CalculatorService' 为目标 'http://localhost:8000/ServiceModelSamples/Service/CalculatorService' 失败。 有关详细信息,请参阅内部异常。

内部异常消息说:

“安全支持提供程序接口 (SSPI) 协商失败。”

我的代码与示例中的代码几乎完全相同。我从来没有真正用 Web 服务或 WCF 或类似的东西做过任何事情。任何人都知道我该如何解决这个问题?谢谢。

编辑 - 我忘了提到异常是在哪里引发的...... 在客户端的 Main 方法中:

CalculatorClient client = new CalculatorClient();

double value1 = 100.00;
double value2 = 15.99;
double result = client.Add(value1, value2); //This is the line that throws the error

//...

我添加了 client.Open();在客户端初始化之后,因为我搜索了谷歌并且有人也遇到了问题,这对他有帮助,但是当我这样做时,同样的异常会被抛出新行。

【问题讨论】:

    标签: c# .net wcf


    【解决方案1】:

    SSPI 失败是与 Kerberos 相关的安全协商失败。您是否在域中,并且您现在可能无法与域控制器通信?还是有其他原因导致您目前无法进行身份验证?

    【讨论】:

    • 是的,这台笔记本电脑在学校的域中,而我在家。那有什么问题吗?我将如何解决这个问题? (除了显而易见的,连接到域,因为当我不在学校时,这不是一个选择)
    • Kerberos 用作基于票证/时间的系统,其中身份验证票证仅在特定时间段内有效 - 在某些情况下,几分钟。您可以将安全性降级为“集成身份验证”(如果可用)或使用密码匿名,但 SSPI 需要 DC
    【解决方案2】:

    我也有这个错误。就我而言,这是由客户端 Web.config 文件中的 &lt;identity&gt; 部分引起的。当我从 TFS 获取文件时,&lt;userPrincipalName value="xxx@yyy.com" /&gt; 部分中有一个条目已被其他人的 ID 值覆盖。此条目基本上可以识别您,因此如果您在网络上,这应该与您的网络登录 ID 匹配。

    【讨论】:

      【解决方案3】:

      我在学习微软教程http://msdn.microsoft.com/en-us/library/ms734712.aspx时也遇到了这个错误

      我的笔记本电脑已连接到目前不可用的域。根据我在这里找到的内容,我进入客户端 app.config 文件并通过删除 userPrincipleName 解决了问题。

      这个:

                  <identity>
                      <userPrincipalName value="user@contoso.com" />
                  </identity>
      

      成为:

                  <identity>
                  </identity>
      

      然后我重新编译了客户端应用程序,一切正常。

      【讨论】:

        【解决方案4】:

        在您的服务合同属性中添加以下行

        [ServiceContract(Namespace = "http://Microsoft.ServiceModel.Samples")]
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2018-06-29
          • 1970-01-01
          • 1970-01-01
          • 2023-03-31
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多