我在带有IIS的Windows Server上托管了WCF服务,并设置为Windows身份验证(公司内部的用户必须使用域身份验证才能登录其桌面)。我想从一个带有Mono的linux(ubuntu)中调用这个WCF服务。我们使用netTcp协议,但它可以改变。我将服务创建为:
var s = new WebTestService.TestServiceClient();
s.ClientCredentials.UserName.UserName = "mydomain\\myuser";
s.ClientCredentials.UserName.Password = "myPassword";
但它仍然无法进行通信。
有没有人知道在哪里修复此错误?有可能解决吗?先谢谢。
未处理的异常:System.IO.IOException:无法从中读取数据 传输连接:由对等方重置连接。 ---> System.Net.Sockets.SocketException:由peer重置连接 System.Net.Sockets.Socket.Receive(System.Byte [] buffer,System.Int32 offset,System.Int32 size,System.Net.Sockets.SocketFlags socketFlags) [0x00052] in:0 at System.Net.Sockets.NetworkStream.Read(System.Byte [] buffer, System.Int32 offset,System.Int32 size)[0x000b4] in :0
---内部异常结束 堆栈跟踪--- at(包装器管理到本机) System.Object:__ icall_wrapper_mono_remoting_wrapper(intptr,intptr)
at(wrapper remoting-invoke) MonoTest.WebTestService.ITestService:GetIdentity()at MonoTest.WebTestService.TestServiceClient.GetIdentity()[0x00007] in < 27f805f676fd42ad978ebb382e24c2d7>:0在MonoTest.Program.Main (System.String [] args)[0x00050] in < 27f805f676fd42ad978ebb382e24c2d7>:0 [ERROR]致命的未处理 EXCEPTION:System.IO.IOException:无法从中读取数据 传输连接:由对等方重置连接。 ---> System.Net.Sockets.SocketException:由peer重置连接 System.Net.Sockets.Socket.Receive(System.Byte [] buffer,System.Int32 offset,System.Int32 size,System.Net.Sockets.SocketFlags socketFlags) [0x00052] in:0 at System.Net.Sockets.NetworkStream.Read(System.Byte [] buffer, System.Int32 offset,System.Int32 size)[0x000b4] in :0 ---内部异常结束 堆栈跟踪--- at(包装器管理到本机) System.Object:__ icall_wrapper_mono_remoting_wrapper(intptr,intptr)
at(wrapper remoting-invoke) MonoTest.WebTestService.ITestService:GetIdentity()at MonoTest.WebTestService.TestServiceClient.GetIdentity()[0x00007] in < 27f805f676fd42ad978ebb382e24c2d7>:0在MonoTest.Program.Main (System.String [] args)[0x00050] in < 27f805f676fd42ad978ebb382e24c2d7>:0
答案 0 :(得分:1)
我在我的一个wcf网络服务中使用用户名和密码进行Windows身份验证,我分配了用户名和密码,如下所示:
s.ClientCredentials.Windows.ClientCredential.UserName = "mydomain\\myuser";
//in my case I don't use a domain though.
s.ClientCredentials.Windows.ClientCredential.Password = "myPassword";
//I acutally use .SecurePassword and assign it SecureString
答案 1 :(得分:0)
我能够让它在Mono上工作。
netTcpBinding工作(根据我的经验)即使使用" anonymous"认证。
wsHttpBinding无法正常工作(方法或操作未实现)。
只有 basicHttpBinding 有效。它适用于 TransportCredentialOnly 以及传输安全模式,具有clientCredentialType Windows 传输设置。在这种情况下,客户端可以在" domain \ username"中设置用户名。格式和密码。