我提前道歉,因为太过模糊,如果你需要任何精确度,我会尽力给予它.
我编译了2个不同的WCF“代码项目”示例应用程序,无论我发布的是什么,我都会遇到以下异常,所以我猜我的机器上有一些配置错误:
编辑
我尝试了另一台机器(相同的操作系统,赢得7 64),它工作正常.
我只是无法弄清楚我的电脑上有什么配置错误或丢失.
{"Operation is not supported on this platform."} at System.Net.HttpListener..ctor() at System.ServiceModel.Channels.SharedHttpTransportManager.Onopen() at System.ServiceModel.Channels.TransportManager.Open(TransportChannelListener channelListener) at System.ServiceModel.Channels.TransportManagerContainer.Open(SelectTransportManagersCallback selectTransportManagerCallback) at System.ServiceModel.Channels.HttpChannelListener.Onopen(TimeSpan timeout) at System.ServiceModel.Channels.CommunicationObject.Open(TimeSpan timeout) at System.ServiceModel.dispatcher.Channeldispatcher.Onopen(TimeSpan timeout) at System.ServiceModel.Channels.CommunicationObject.Open(TimeSpan timeout) at System.ServiceModel.ServiceHostBase.Onopen(TimeSpan timeout) at System.ServiceModel.Channels.CommunicationObject.Open(TimeSpan timeout) at WCFService.MainForm.startWCFServer() in D:\xxx\MainForm.cs:line 77
下面是代码.我猜没有什么不寻常的基本WCF东西.
private ServiceHost host = null; public void startWCFServer() { // Create the url that is needed to specify where the service should be tarted urlService = "net.tcp://" + "127.0.0.1" + ":8000/MyService"; // Instruct the ServiceHost that the type that is used is a ServiceLibrary.service1 host = new ServiceHost(typeof(ServiceLibrary.service1)); host.opening += new EventHandler(host_opening); host.Opened += new EventHandler(host_Opened); host.Closing += new EventHandler(host_Closing); host.Closed += new EventHandler(host_Closed); // The binding is where we can choose what transport layer we want to use. HTTP,TCP ect. NetTcpBinding tcpBinding = new NetTcpBinding(); tcpBinding.TransactionFlow = false; tcpBinding.Security.Transport.ProtectionLevel = System.Net.Security.ProtectionLevel.EncryptAndSign; tcpBinding.Security.Transport.ClientCredentialType = TcpClientCredentialType.Windows; tcpBinding.Security.Mode = SecurityMode.None; // <- Very crucial // Add endpoint host.AddServiceEndpoint(typeof(ServiceLibrary.IService1),tcpBinding,urlService); // A channel to describe the service. Used with the proxy scvutil.exe tool ServiceMetadataBehavior MetadataBehavior; MetadataBehavior = host.Description.Behaviors.Find<ServiceMetadataBehavior>(); if (MetadataBehavior == null) { // This is how I create the proxy object that is generated via the svcutil.exe tool MetadataBehavior = new ServiceMetadataBehavior(); //MetadataBehavior.HttpGetUrl = new Uri("http://" + _ipAddress.ToString() + ":8001/MyService"); MetadataBehavior.HttpGetUrl = new Uri("http://" + "127.0.0.1" + ":8001/MyService"); MetadataBehavior.HttpGetEnabled = true; MetadataBehavior.ToString(); host.Description.Behaviors.Add(MetadataBehavior); urlMeta = MetadataBehavior.HttpGetUrl.ToString(); } host.open(); // <---- EXCEPTION BLOWS HERE }
细节 :
演示应用程序是here和here并删除了上述相同的异常
它可能是here所述的UAC问题但是这并没有解决我的问题.
操作系统是Windows 7 x64
提前致谢.
解决方法
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。