伙伴/加尔斯我们的网站在以后使用WCF作为应用程序时表现糟糕.我们正在使用消息级安全性和证书(相互身份验证).我们正在缓存应用程序对象中的通道工厂: Sub Application_Start(ByVal sende
Sub Application_Start(ByVal sender As Object, ByVal e As EventArgs) Dim loChannelFactor As New ChannelFactory(Of OurReference.IWCFChannel)("ClientEndpoint") loChannelFactor.Open() Application.Add("ChannelFactory", loChannelFactor) End Sub
在我们需要数据的每个页面中,我们执行以下操作:
Dim Proxy = DirectCast(voWebApp("ChannelFactory"), ChannelFactory(Of OurInfoReference.IOurInfoChannel)).CreateChannel Proxy.DataCall() If roWCFService IsNot Nothing Then CType(roWCFService, ICommunicationObject).Close() roWCFService = Nothing End If
我也设置了establishsecuritycontext = true.
我们不想缓存代理,因为不得不混淆故障的代理状态.据我所知,缓存通道堆栈应该足够了.当我打开跟踪时,我看到了一堆SCT命令,而不仅仅是我想要的第一次通话.有谁知道发生了什么事.我们是否错误地缓存了频道工厂?
谢谢,
NCAGE
“MakeCert是Microsoft提供的一种工具,用于创建可在产品开发过程中使用的测试证书(仅用于开发和测试目的).这些证书还存在性能问题,某些加密操作在使用时可能会执行缓慢.从真正的证书颁发机构发出没有这个问题,这是一个知道问题.“
http://weblogs.asp.net/cibrax/archive/2006/08/08/Creating-X509-Certificates-for-WSE-or-WCF.aspx
编辑:可能是额外的活动是由于创建会话时的初始握手. WCF默认为每次调用,即为每个调用创建一个新会话.您可以尝试用以下方式标记合同:
[ServiceContract(Session = true)]
这可以维持会话并避免初始握手.