Tôi có một ứng dụng bàn điều khiển khách hàng nói chuyện với dịch vụ WCF và tôi nhận được lỗi sau: "Máy chủ không cung cấp trả lời có ý nghĩa, điều này có thể là do không khớp hợp đồng, tắt phiên trước hoặc một lỗi máy chủ nội bộ. "Vấn đề không khớp của hợp đồng WCF
Tôi nghĩ rằng đó là do hợp đồng không khớp nhưng tôi không thể hiểu tại sao. Dịch vụ này chỉ chạy tốt và 2 phần đã hoạt động cùng nhau cho đến khi tôi thêm mã mạo danh.
Có ai có thể thấy điều gì sai không?
Đây là khách hàng, tất cả được thực hiện trong mã:
NetTcpBinding binding = new NetTcpBinding();
binding.Security.Mode = SecurityMode.Message;
binding.Security.Message.ClientCredentialType = MessageCredentialType.Windows;
EndpointAddress endPoint = new EndpointAddress(new Uri("net.tcp://serverName:9990/TestService1"));
ChannelFactory<IService1> channel = new ChannelFactory<IService1>(binding, endPoint);
channel.Credentials.Windows.AllowedImpersonationLevel = TokenImpersonationLevel.Impersonation;
IService1 service = channel.CreateChannel();
Và đây là tập tin cấu hình của dịch vụ WCF:
<configuration>
<system.serviceModel>
<bindings>
<netTcpBinding>
<binding name="MyBinding">
<security mode="Message">
<transport clientCredentialType="Windows"/>
<message clientCredentialType="Windows" />
</security>
</binding>
</netTcpBinding>
</bindings>
<behaviors>
<serviceBehaviors>
<behavior name="WCFTest.ConsoleHost2.Service1Behavior">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="true" />
<serviceAuthorization impersonateCallerForAllOperations="true" />
</behavior>
</serviceBehaviors>
</behaviors>
<services>
<service behaviorConfiguration="WCFTest.ConsoleHost2.Service1Behavior"
name="WCFTest.ConsoleHost2.Service1">
<endpoint address="" binding="wsHttpBinding" contract="WCFTest.ConsoleHost2.IService1">
<identity>
<dns value="" />
</identity>
</endpoint>
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
<endpoint binding="netTcpBinding" bindingConfiguration="MyBinding"
contract="WCFTest.ConsoleHost2.IService1" />
<host>
<baseAddresses>
<add baseAddress="http://serverName:9999/TestService1/" />
<add baseAddress="net.tcp://serverName:9990/TestService1/" />
</baseAddresses>
</host>
</service>
</services>
</system.serviceModel>
</configuration>
Vâng, có lẽ không - được thông báo lỗi cũng cung cấp thêm hai casuse càng tốt:" ....., một phiên shutdown non hoặc một lỗi máy chủ nội bộ. " –