当前位置 : 主页 > 网络安全 > 测试自动化 >

使用WCF和证书的可怕性能(相互身份验证)

来源:互联网 收集:自由互联 发布时间:2021-06-22
伙伴/加尔斯我们的网站在以后使用WCF作为应用程序时表现糟糕.我们正在使用消息级安全性和证书(相互身份验证).我们正在缓存应用程序对象中的通道工厂: Sub Application_Start(ByVal sende
伙伴/加尔斯我们的网站在以后使用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

在我们需要数据的每个页面中,我们执行以下操作:

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)]

这可以维持会话并避免初始握手.

网友评论