由于某种原因,我有错误发生code,使用添加服务引用向导WCF服务。
自定义工具警告:没有终点的窗户身临其境的项目被发现的1版本兼容。 C:工作 test_projects CirMetro 服务引用 SvcProxy Reference.svcmap 1 CirMetro
难道你们知道如何解决它?
我的样品WCF服务是新空房禁地简单。下面是源$ C $ C:
静态无效的主要()
{
UiWcfSession.OnInitialize + = ClientInitialize;
VAR baseAddresses =新的URI(的net.tcp://本地主机:9000 /);
VAR主机=新的ServiceHost(typeof运算(UiWcfSession),baseAddresses);
VAR =的ReliableSession新ReliableSessionBindingElement {有序= TRUE,InactivityTimeout =新的时间跨度(24,20,31,23)};
VAR结合=
新CustomBinding(的ReliableSession,新TcpTransportBindingElement()){ReceiveTimeout = TimeSpan.MaxValue};
host.AddServiceEndpoint(typeof运算(IClientFulfillmentPipeService),结合SVC);
VAR metadataBehavior =新的ServiceMetadataBehavior();
host.Description.Behaviors.Add(metadataBehavior);
变种mexBinding = MetadataExchangeBindings.CreateMexTcpBinding();
host.AddServiceEndpoint(typeof运算(IMetadataExchange接口),mexBinding,墨西哥);
host.Open();
Thread.CurrentThread.Join();
}
私有静态无效ClientInitialize(INT uiprocessid,字符串键)
{
的Debug.WriteLine(ClientInitialize);
}
解决方案
我想它了。
这是不幸的,我们必须要反编译的Visual Studio的来源,找出在地铁什么工作,而是引用不存在的文件: - )
总之我不能使用的ReliableSession。
![微软Xbox概念项目曝光 享受身临其境的感觉](https://p.xsw88.cn/allimgs/daicuo/20230903/992.png)
如果您想了解更多详细信息 C: Program Files文件(x86)的微软的Visual Studio 11.0 Common7 IDE PrivateAssemblies Microsoft.VisualStudio.ServiceReference.Platforms.dll
包含功能,检查支持什么。
私有静态布尔IsBindingSupported(约束力181)
{
如果(!((绑定basicHttpBinding的)及&安培;!(绑定CustomBinding))及及((绑定WsHttpBinding的)及!&安培;!(绑定NetTcpBinding的)))
{
返回false;
}
如果(绑定的WSHttpBinding)
{
如果(((WsHttpBinding的)绑定).ReliableSession.Enabled)
{
返回false;
}
如果(((WsHttpBinding的)绑定).TransactionFlow)
{
返回false;
}
如果(((WsHttpBinding的)绑定).MessageEncoding!= WSMessageEncoding.Text)
{
返回false;
}
}
如果(绑定NetTcpBinding的)
{
如果(((NetTcpBinding的)结合).ReliableSession.Enabled)
{
返回false;
}
如果(((NetTcpBinding的)结合).TransactionFlow)
{
返回false;
}
}
的foreach(在binding.CreateBindingElements BindingElement元件())
{
如果(元素TransportBindingElement)
{
如果((元素作为HttpsTransportBindingElement).RequireClientCertificate))及((元件是HttpsTransportBindingElement)||;;&安培;!((元件是HttpTransportBindingElement)及&安培!(元件是TcpTransportBindingElement))
{
返回false;
}
}
否则,如果(元素MessageEncodingBindingElement)
{
如果(!(元素BinaryMessageEncodingBindingElement)||(((BinaryMessageEncodingBindingElement)元).MessageVersion!= MessageVersion.Soap12WSAddressing10))
{
如果(元素TextMessageEncodingBindingElement)
{
如果((((TextMessageEncodingBindingElement)元件).MessageVersion = MessageVersion.Soap11)及!及(((TextMessageEncodingBindingElement)元件).MessageVersion = MessageVersion.Soap12WSAddressing10)!)
{
返回false;
}
}
其他
{
返回false;
}
}
}
否则,如果(元素SecurityBindingElement)
{
如果(!(元素TransportSecurityBindingElement))
{
返回false;
}
TransportSecurityBindingElement元素1 =(TransportSecurityBindingElement)元;
如果(!ValidateUserNamePasswordSecurityBindingElement(元素1))
{
如果(((((element2.EndpointSupportingTokenParameters.Endorsing.Count == 1)及及(element2.EndpointSupportingTokenParameters.Signed.Count == 0))及及((element2.EndpointSupportingTokenParameters.SignedEncrypted.Count == 0 )及及(element2.EndpointSupportingTokenParameters.SignedEndorsing.Count == 0)))及及((element2.EndpointSupportingTokenParameters.Endorsing [0]是SecureConversationSecurityTokenParameters)及及((element2.MessageSecurityVersion == MessageSecurityVersion.WSSecurity10WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11BasicSecurityProfile10) ||(element2.MessageSecurityVersion == MessageSecurityVersion.WSSecurity11WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11BasicSecurityProfile10)))) &安培;及((element2.IncludeTimestamp&安培;及(element2.DefaultAlgorithmSuite == SecurityAlgorithmSuite.Default))及及(element2.SecurityHeaderLayout == SecurityHeaderLayout.Strict)))
{
SecureConversationSecurityTokenParameters参数=(SecureConversationSecurityTokenParameters)element2.EndpointSupportingTokenParameters.Endorsing [0];
如果(parameters.RequireDerivedKeys ||!(parameters.BootstrapSecurityBindingElement是TransportSecurityBindingElement))
{
返回false;
}
TransportSecurityBindingElement bootstrapSecurityBindingElement =(TransportSecurityBindingElement)parameters.BootstrapSecurityBindingElement;
如果(!ValidateUserNamePasswordSecurityBindingElement(bootstrapSecurityBindingElement))
{
返回false;
}
}
其他
{
返回false;
}
}
}
否则如果(((元件是SslStreamSecurityBindingElement)||(元素作为SslStreamSecurityBindingElement).RequireClientCertificate)及!&安培;!(元件是WindowsStreamSecurityBindingElement))
{
如果(!(元素TransactionFlowBindingElement))
{
返回false;
}
如果(((绑定WsHttpBinding的)||((WsHttpBinding的)结合).TransactionFlow)及!&安培;!((绑定NetTcpBinding的)||((NetTcpBinding的)结合).TransactionFlow))
{
返回false;
}
}
}
返回true;
}
For some reason I have error generating code for a wcf service using "Add service reference" wizard.
Custom tool warning: No endpoints compatible with version 1 of windows immersive project were found. C:worktest_projectsCirMetroService ReferencesSvcProxyReference.svcmap 1 1 CirMetro
Do you guys know how to fix it ?
My sample WCF service is braindead simple. Here is source code:
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");
}
解决方案
I figured it out.
It's unfortunate that we have to decompile sources of Visual Studio to find out what works in Metro instead of referring to non-existent documentation :-)
In short I can't use ReliableSession.
If you want more details C:Program Files (x86)Microsoft Visual Studio 11.0Common7IDEPrivateAssembliesMicrosoft.VisualStudio.ServiceReference.Platforms.dll
contains function which check what is supported.
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;
}
相关推荐
最新文章