WCF 和证书(相互身份验证)的糟糕性能

2023-12-08

伙计们/姑娘们,我们稍后使用 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

我还设置了建立 securitycontext = true。

我们不想缓存代理,因为不得不处理错误的代理状态。据我所知,缓存通道堆栈应该足够了。当我打开跟踪时,我看到了一堆 SCT 命令,而不是像我预期的那样仅用于第一次调用。有谁知道发生了什么事。我们是否错误地缓存了通道工厂?

谢谢, 恩凯奇


看起来您可以使用证书颁发机构的证书来解决它:

“MakeCert是微软提供的一个工具,用于创建可在产品开发过程中使用的测试证书(仅用于开发和测试目的)。这些证书也存在性能问题,某些加密操作在使用时可能会执行缓慢。”由真正的证书颁发机构颁发的不存在此问题,并且这是一个已知问题。”

http://weblogs.asp.net/cibrax/archive/2006/08/08/Creating-X509-Certificates-for-WSE-or-WCF.aspx

Edit:额外的活动可能是由于创建会话时的初始握手造成的。 WCF 默认是每次调用,即为每个调用创建一个新会话。您可以尝试在合同上标记:

[服务合同(会话= true)]

这可以维持会话并避免最初的握手。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

WCF 和证书(相互身份验证)的糟糕性能 的相关文章

  • 当一个控制台应用程序已在运行时,如何在 Visual Studio 中启动第二个控制台应用程序

    我正在研究 WCF 书中的一些示例 单个解决方案中有一个主机项目和客户端项目 两者都是控制台应用程序 主机是启动应用程序 但客户端应用程序似乎没有像书中所说的那样打开控制台 书上说 当主机运行时 运行客户端 运行 按钮已被禁用 因为它已经在
  • WCF 服务绑定采用默认值而不是自定义值

    我已经构建了一个 APi 它是一个 WCF 服务 在服务的 web config 中 我指定了一个自定义 bindong 如下所示
  • 将 X509 证书存储在数据库中

    为了访问网络服务 我需要一个证书 我生成了我的证书 openssl genrsa 1024 gt private key openssl req new x509 nodes sha1 days 1100 key private key g
  • WCF:如何诊断故障通道?

    我正在为我的实验室进行一项更改 希望能够帮助诊断我们所看到的一些奇怪的通道故障现象 有一个测试应用程序使用 DuplexChannelFactory 连接到几个 Windows 服务 并且由于某种原因 该测试应用程序上的通道似乎出现了很多故
  • 替换 WCF 默认 JSON 序列化

    是否可以替换 WCF 的默认 JSON 序列化 我目前正在使用webHttp行为 并通过application json作为 MIME 类型 特别是 我不喜欢默认情况下每个属性都是键 值对 例如 Key PropertyName Value
  • WCF 包装代理客户端

    我的项目中有许多在客户端应用程序中使用的 Web 方法 我不想写这样的代码 using ServiceClient sc new ServiceClient Invoke service methods sc Method1 相反 我想写
  • RESTful WCF 的最低配置

    为了让 WCF 与 REST 一起工作 我至少需要在 web config 中放入什么 我已经用 WebGet 注释了我的方法 但他们没有收到消息 我发现您可以将以下内容添加到 svc 文件中的 ServiceHost 指令中 它会自动为您
  • 如何唯一标识会话 0 中运行的 Internet Explorer 窗口?

    我正在创造WCF web services自动化internet explorer 有多个Web服务调用需要访问同一个实例Internet Explorer 然而 自从WCF服务托管于IIS所有对 Web 服务的调用都在会话 0 中执行 现
  • WCF 的 BasichttpBinding 与 WSHttpBinding

    我想用服务器数据更新客户端数据 反之亦然 目前我正在使用 BasicHttpBinding 它比 wsHttpBinding 更快 我的要求是达到 快速数据通讯 安全通讯 BasicHttpBinding 和 wsHttpBinding 适
  • 证书中的“-----BEGIN TRUSTED CERTIFICATE-----”是什么意思?

    我获得了一个 CA 证书 如下所示 据我所知 证书应该以 BEGIN CERTIFICATE 开头 那么 BEGIN TRUSTED CERTIFICATE 部分是什么意思 我检查了 OpenSSL 文档 它说 可信 部分是可信设置 但我想
  • 创建证书以通过 bash 在 Mac OS X 上签署 GDB

    我正在尝试通过以下方式在 Mac OS X 上安装 gdblink1 http www patosai com blog post installing gdb on mac os x yosemite and link2 http ntr
  • 如何为WCF服务添加跨域支持

    我试图允许从托管在 localhost 80 的 javascript 应用程序向托管在不同端口的 WCF RStful 服务发出 POST 请求 但不知何故它不起作用 我尝试将自定义属性添加到标头 以及以编程方式将其添加到我的服务中JSO
  • 如何在运行时通过 URL 使用 WCF Web 服务?

    我想通过 URL 访问服务中公开的所有方法 如果假设 URL 为 http localhost MyService MyService svc 我如何访问方法 如果假设我有一个 ServiceReference 如果没有服务参考号该怎么办
  • 实体框架和数据库集

    我正在尝试设置一个通用接口来从存储库中检索实体 问题是我需要从 WCF 服务请求数据 而据我所知 泛型不能与操作合约一起使用 所以我有这个在控制台应用程序中工作 而不是使用服务调用 public virtual List
  • 尽管受信任的根 CA,WCF 错误“X.509 证书链构建失败”

    我收到了中提到的错误这个问题 https stackoverflow com questions 4256520 wcf error the x 509 certificate cn localhost chain building fai
  • WCF RIA 服务 - 加载多个实体

    我正在寻找一种模式来解决以下问题 我认为这很常见 我正在使用 WCF RIA 服务在初始加载时将多个实体返回给客户端 我希望两个实体异步加载 以免锁定 UI 并且我想利用 RIA 服务来执行此操作 我的解决方案如下 似乎有效 这种方法会遇到
  • WCF MaxReceivedMessageSize 属性未采用

    搜索了一下 没有运气 我不断得到 已超出传入消息的最大消息大小配额 65536 要增加配额 请使用相应绑定元素上的 MaxReceivedMessageSize 属性 这是有道理的 所以我进入服务器和客户端配置并进行更改 Client
  • 将复杂对象传递到 WCF Rest 服务

    我有一个接受复杂对象的操作合约 并且我通过 jQuery 调用该操作 如何使用 jQuery 传递像这样的复杂类型对象 以下是操作签名 public Resolution CreateNewResolution Resolution New
  • WCF 服务 Process.Start 在网络服务帐户下模拟不同用户

    我在 IIS Windows Server 2008 R2 中托管了 Wcf 服务 使用带有网络服务标识的 AppPool NET 4 0 我的 Wcf 服务有一个使用 Process Start 调用命令 EXE 的方法 我需要使用不同的
  • 强制 WCF 在进入实际函数之前对每个请求调用一个方法

    我有一个具有许多不同功能的 RESTful WCF 服务 对于每个函数 我需要调用我编写的身份验证方法 我可以在每个请求上手动调用此方法 但我一直在寻找一种方法来强制 WCF 引擎在输入这些函数之前调用此方法 有谁知道这是否可能 Cheer

随机推荐