当前位置:  开发笔记 > 开发工具 > 正文

在WCF中设置ClientCredentials时出现"Object is read only"错误

如何解决《在WCF中设置ClientCredentials时出现"Objectisreadonly"错误》经验,为你挑选了2个好方法。

我有一个名为ServerClient的Visual Studio(客户端)生成的代理对象.我试图在使用此代码打开新连接之前设置ClientCredentials.UserName.UserName/Password:

InstanceContext context = new InstanceContext(this);

m_client = new ServerClient(context);
m_client.ClientCredentials.UserName.UserName = "Sample";

一旦代码命中UserName行,它就会失败并显示"Object is read-only"错误.我知道如果连接已经打开或出现故障会发生这种情况,但此时我还没有调用context.Open().

我已将Bindings(使用netTcpBinding)配置为使用Message作为其安全模式,并将MessageClientCredentialType设置为UserName.

有任何想法吗?



1> 小智..:

我注意到在为服务创建代理类的实例后,我可以设置一次没有错误的用户名和密码,并成功调用我的webservice.当我尝试在现有实例上再次设置用户名和密码时(当然不需要),我得到你提到的'对象是只读'错误.每个实例生命周期设置一次值对我有用.



2> Paul Mrozows..:

您似乎只能在实例化周期中很早就访问这些属性.如果我覆盖代理类(ServerClient)中的构造函数,我可以设置这些属性:

base.ClientCredentials.UserName.UserName = "Sample";

我开始欣赏那些建议不使用VS提供的自动构建代理的人.

推荐阅读
郑小蒜9299_941611_G
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有