伙伴/加尔斯我们的网站在以后使用WCF作为应用程序时表现糟糕.我们正在使用消息级安全性和证书(相互身份验证).我们正在缓存应用程序对象中的通道工厂:
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
Run Code Online (Sandbox Code Playgroud)
在我们需要数据的每个页面中,我们执行以下操作:
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
Run Code Online (Sandbox Code Playgroud)
我也设置了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)]
这可以维持会话并避免初始握手.
归档时间: |
|
查看次数: |
3247 次 |
最近记录: |