我有一个由 Visual Studio(客户端)生成的名为 ServerClient 的代理对象。我尝试在使用以下代码打开新连接之前设置 ClientCredentials.UserName.UserName/Password:
InstanceContext context = new InstanceContext(this);
m_client = new ServerClient(context);
m_client.ClientCredentials.UserName.UserName = "Sample";
一旦代码到达 UserName 行,它就会失败并出现“对象是只读的”错误。我知道如果连接已经打开或出现故障,就会发生这种情况,但此时我还没有调用 context.Open() 。
我已将绑定(bind)(使用 netTcpBinding)配置为使用 Message 作为其安全模式,并将 MessageClientCredentialType 设置为 UserName。
有什么想法吗?
最佳答案
我注意到,在为服务创建代理类的实例后,我可以设置一次用户名和密码,不会出现错误,并成功调用我的 Web 服务。然后,当我尝试在现有实例上再次设置用户名和密码时(当然不必要),我收到您提到的“对象是只读”错误。每个实例生命周期设置一次值对我来说很有效。
关于visual-studio - 在 WCF 中设置 ClientCredentials 时出现 "Object is read only"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/199014/