我很抱歉太过于模糊,如果您需要任何精度,我会尽我所能给它。WCF:PlatformNotSupportedException当运行服务器项目
我整理了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
在此先感谢。
您是否拥有Windows Communication Foundation HTTP/Non-HTTP Activation窗口功能?这些选项位于控制面板 - >程序和功能 - >打开或关闭Windows功能 - > Microsoft .NET Framework 3.x(刚刚意识到您的示例是.NET 3.5而不是.NET 4) – SliverNinja