[英]Endpoint is not compatible with version 1 of windows immersive project
出于某种原因,我使用“添加服务引用”向导为wcf服务生成代码时出错。
Custom tool warning: No endpoints compatible with version 1 of windows immersive project were found. C:\work\test_projects\CirMetro\Service References\SvcProxy\Reference.svcmap 1 1 CirMetro
你们知道怎么解决吗?
我的示例WCF服务很简单。 这是源代码:
static void Main()
{
UiWcfSession.OnInitialize += ClientInitialize;
var baseAddresses = new Uri("net.tcp://localhost:9000/");
var host = new ServiceHost(typeof(UiWcfSession), baseAddresses);
var reliableSession = new ReliableSessionBindingElement { Ordered = true, InactivityTimeout = new TimeSpan(24, 20, 31, 23) };
var binding =
new CustomBinding(reliableSession, new TcpTransportBindingElement()) { ReceiveTimeout = TimeSpan.MaxValue };
host.AddServiceEndpoint(typeof(IClientFulfillmentPipeService), binding, "svc");
var metadataBehavior = new ServiceMetadataBehavior();
host.Description.Behaviors.Add(metadataBehavior);
var mexBinding = MetadataExchangeBindings.CreateMexTcpBinding();
host.AddServiceEndpoint(typeof(IMetadataExchange), mexBinding, "mex");
host.Open();
Thread.CurrentThread.Join();
}
private static void ClientInitialize(int uiprocessid, string key)
{
Debug.WriteLine("ClientInitialize");
}
我想到了。
不幸的是,我们必须反编译Visual Studio的源代码,以找出在Metro中有效的内容,而不是引用不存在的文档:-)
总之,我不能使用ReliableSession。
如果需要更多详细信息C:\\Program Files (x86)\\Microsoft Visual Studio 11.0\\Common7\\IDE\\PrivateAssemblies\\Microsoft.VisualStudio.ServiceReference.Platforms.dll
包含检查支持的功能。
private static bool IsBindingSupported(Binding binding)
{
if ((!(binding is BasicHttpBinding) && !(binding is CustomBinding)) && (!(binding is WSHttpBinding) && !(binding is NetTcpBinding)))
{
return false;
}
if (binding is WSHttpBinding)
{
if (((WSHttpBinding) binding).ReliableSession.Enabled)
{
return false;
}
if (((WSHttpBinding) binding).TransactionFlow)
{
return false;
}
if (((WSHttpBinding) binding).MessageEncoding != WSMessageEncoding.Text)
{
return false;
}
}
if (binding is NetTcpBinding)
{
if (((NetTcpBinding) binding).ReliableSession.Enabled)
{
return false;
}
if (((NetTcpBinding) binding).TransactionFlow)
{
return false;
}
}
foreach (BindingElement element in binding.CreateBindingElements())
{
if (element is TransportBindingElement)
{
if ((!(element is HttpTransportBindingElement) && (!(element is HttpsTransportBindingElement) || (element as HttpsTransportBindingElement).RequireClientCertificate)) && !(element is TcpTransportBindingElement))
{
return false;
}
}
else if (element is MessageEncodingBindingElement)
{
if (!(element is BinaryMessageEncodingBindingElement) || (((BinaryMessageEncodingBindingElement) element).MessageVersion != MessageVersion.Soap12WSAddressing10))
{
if (element is TextMessageEncodingBindingElement)
{
if ((((TextMessageEncodingBindingElement) element).MessageVersion != MessageVersion.Soap11) && (((TextMessageEncodingBindingElement) element).MessageVersion != MessageVersion.Soap12WSAddressing10))
{
return false;
}
}
else
{
return false;
}
}
}
else if (element is SecurityBindingElement)
{
if (!(element is TransportSecurityBindingElement))
{
return false;
}
TransportSecurityBindingElement element2 = (TransportSecurityBindingElement) element;
if (!ValidateUserNamePasswordSecurityBindingElement(element2))
{
if (((((element2.EndpointSupportingTokenParameters.Endorsing.Count == 1) && (element2.EndpointSupportingTokenParameters.Signed.Count == 0)) && ((element2.EndpointSupportingTokenParameters.SignedEncrypted.Count == 0) && (element2.EndpointSupportingTokenParameters.SignedEndorsing.Count == 0))) && ((element2.EndpointSupportingTokenParameters.Endorsing[0] is SecureConversationSecurityTokenParameters) && ((element2.MessageSecurityVersion == MessageSecurityVersion.WSSecurity10WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11BasicSecurityProfile10) || (element2.MessageSecurityVersion == MessageSecurityVersion.WSSecurity11WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11BasicSecurityProfile10)))) && ((element2.IncludeTimestamp && (element2.DefaultAlgorithmSuite == SecurityAlgorithmSuite.Default)) && (element2.SecurityHeaderLayout == SecurityHeaderLayout.Strict)))
{
SecureConversationSecurityTokenParameters parameters = (SecureConversationSecurityTokenParameters) element2.EndpointSupportingTokenParameters.Endorsing[0];
if (parameters.RequireDerivedKeys || !(parameters.BootstrapSecurityBindingElement is TransportSecurityBindingElement))
{
return false;
}
TransportSecurityBindingElement bootstrapSecurityBindingElement = (TransportSecurityBindingElement) parameters.BootstrapSecurityBindingElement;
if (!ValidateUserNamePasswordSecurityBindingElement(bootstrapSecurityBindingElement))
{
return false;
}
}
else
{
return false;
}
}
}
else if ((!(element is SslStreamSecurityBindingElement) || (element as SslStreamSecurityBindingElement).RequireClientCertificate) && !(element is WindowsStreamSecurityBindingElement))
{
if (!(element is TransactionFlowBindingElement))
{
return false;
}
if ((!(binding is WSHttpBinding) || ((WSHttpBinding) binding).TransactionFlow) && (!(binding is NetTcpBinding) || ((NetTcpBinding) binding).TransactionFlow))
{
return false;
}
}
}
return true;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.