Tôi đã viết một dịch vụ duplex WCF và ứng dụng khách. Mọi thứ hoạt động tốt cho đến khi tôi cố gọi .Demand() trong quá trình cài đặt ứng dụng khách. Dường như dịch vụ gọi phương thức gọi lại ẩn danh. Tôi nghĩ rằng tôi đang thiếu cách cấu hình đúng dịch vụ.Gọi lại hai mặt luôn ẩn danh
Mã được sử dụng để tạo ServiceHost;
ServiceHost duplex = new ServiceHost(new ServerWCallbackImpl());
NetTcpBinding secureBinding = new NetTcpBinding(SecurityMode.Message);
secureBinding.Security.Message.ClientCredentialType = MessageCredentialType.Windows;
duplex.AddServiceEndpoint(typeof(IServerWithCallback),
secureBinding,
"net.tcp://localhost:9080/DataService");
Console.WriteLine(Thread.CurrentPrincipal.Identity.Name); //<-- this correctly shows the current principal
duplex.Open();
if (duplex.State == CommunicationState.Opened)
((ServerWCallbackImpl)duplex.SingletonInstance).Send("Hello World!");
Mã được sử dụng để tạo khách hàng;
CallbackImpl callbackInstance = new CallbackImpl();
NetTcpBinding secureBinding = new NetTcpBinding(SecurityMode.Message);
secureBinding.Security.Message.ClientCredentialType = MessageCredentialType.Windows;
DuplexChannelFactory<IServerWithCallback> cf = new DuplexChannelFactory<IServerWithCallback>(
callbackInstance,
secureBinding,
new EndpointAddress(requestingEndpointAddress));
cf.Credentials.Windows.AllowedImpersonationLevel = TokenImpersonationLevel.Impersonation;
cf.Credentials.Windows.ClientCredential = (NetworkCredential)CredentialCache.DefaultCredentials;
IServerWithCallback srv = cf.CreateChannel(new InstanceContext(callbackInstance));
srv.InitiateConversation();
thực hiện Chủ đầu tư:
public void MethodOnClient(string message)
{
Console.WriteLine(Thread.CurrentPrincipal.Identity.Name); // <-- anonymous
PrincipalPermission p = new PrincipalPermission(@"DOMAIN\User", null);
p.Demand(); // <-- fails
}
Làm thế nào tôi có thể cấu hình để các ServiceHost gọi đúng Callback với các thông tin Windows?
Máy đào mộ? :) Câu hỏi đã được hỏi ngày 18 tháng 2 năm 2009 và yêu cầu người dùng đã bị xóa vì không hoạt động, tôi đoán thời gian dài trước đây. – abatishchev