一直在一臺電腦上同時搞WCF的服務(wù)和客戶端,今天在另外一臺電腦上調(diào)用,發(fā)現(xiàn)了一個新的問題"調(diào)用方未由服務(wù)進行身份驗證",
在網(wǎng)上查了大量的資料,也沒有發(fā)現(xiàn)有人說明白其中的原因,只是發(fā)現(xiàn)了一篇解決的辦法,但是個人感覺不是最佳的方案,所以還在探索中.
發(fā)現(xiàn)的解決的辦法中提到,在服務(wù)端和客戶端分別將安全驗證設(shè)置成"none"就可以了,自己試了幾遍也沒成功.但是從理論上是行的通的.
另外呢發(fā)現(xiàn)了這樣的一個解決辦法,不知道有沒有其它的見解
將 WCF 服務(wù)器和客戶端分別部署到不同機器上,可能會觸發(fā)如下異常。
未處理 System.ServiceModel.Security.SecurityNegotiationException
Message="服務(wù)器已拒絕客戶端憑據(jù)。"
Source="mscorlib"
解決方法,就是調(diào)整服務(wù)器端 Binding 的安全方式,比如設(shè)為 "None"。
NetTcpBinding binding = new NetTcpBinding();
binding.Security.Mode = SecurityMode.None;
ServiceHost host = new ServiceHost(typeof(MyService));
host.AddServiceEndpoint(typeof(IService), binding, "net.tcp://192.168.0.112:8081");
ServiceMetadataBehavior metadata = new ServiceMetadataBehavior();
metadata.HttpGetUrl = new Uri("http://192.168.0.112:8080");
metadata.HttpGetEnabled = true;
host.Description.Behaviors.Add(metadata);
host.Open();
或者在配置文件中設(shè)置。