Chúng tôi có dịch vụ WCF là cửa sổ được xác thực. Ràng buộc được cấu hình như dưới đây.Dịch vụ WCF được xác thực qua cửa sổ từ C#
<basicHttpBinding>
<binding textEncoding="utf-8" maxReceivedMessageSize="2147483647" maxBufferSize="2147483647">
<security mode="TransportCredentialOnly">
<transport clientCredentialType="Windows" />
</security>
</binding>
</basicHttpBinding>
Tôi cố gắng để gọi các dịch vụ từ một ứng dụng thử nghiệm như,
try
{
BasicHttpBinding binding = new BasicHttpBinding();
binding.ReceiveTimeout = new TimeSpan(10, 10, 00);
binding.SendTimeout = new TimeSpan(10, 10, 00);
binding.MaxReceivedMessageSize = Int32.MaxValue;
binding.Security.Mode = BasicHttpSecurityMode.TransportCredentialOnly;
binding.Security.Transport.ClientCredentialType = HttpClientCredentialType.Windows;
EndpointAddress endpoint = new EndpointAddress("ServiceUrl");
ChannelFactory<ICRMConnectorService> channelFactory = new ChannelFactory<ICRMConnectorService>(binding, endpoint);
channelFactory.Credentials.Windows.ClientCredential = System.Net.CredentialCache.DefaultNetworkCredentials;
var service = channelFactory.CreateChannel();
service.TestMethod();
}
catch (Exception ex)
{
throw ex;
}
Các cuộc gọi được trả lại một lỗi như, Các máy chủ từ xa trở về một lỗi: (401) trái phép.
Ai đó có thể giúp bạn không?
bạn đã không đề cập đến nếu dịch vụ là địa phương ngay bây giờ, nhưng có lẽ câu hỏi đó có thể giúp: https://stackoverflow.com/questions/11408318/iis7-wcf-on-local-computer-i-get-401-unauthorized -access-is-denied-do-in-in – jonathana
Không, dịch vụ không phải là địa phương. Nó được lưu trữ trên máy chủ khác nhau trong cùng một tên miền. –
không nhớ, bạn có quyền truy cập để kiểm tra dịch vụ hoặc tiêu thụ nó không? Và cũng cho phép ghi nhật ký lỗi và theo dõi WCF để kiểm tra xem thông tin xác thực hợp lệ có được chuyển qua SOAP hay không. –