【问题标题】:WCF - An item with the same key has already been addedWCF - 已添加具有相同密钥的项目
【发布时间】:2017-02-28 06:17:23
【问题描述】:

我在尝试通过http://www.example.com/WS/myExchange.svc 打开 WCF WebService 时不断收到错误:

System.ArgumentException 已添加具有相同密钥的项目。

System.ArgumentException:具有相同键的项目已经 添加。在 System.Runtime.AsyncResult.End[TAsyncResult](IAsyncResult 结果)在 System.ServiceModel.Activation.HostedHttpRequestAsyncResult.End(IAsyncResult 结果)在 System.ServiceModel.Activation.ServiceHttpModule.EndProcessRequest(IAsyncResult 一只老鼠 System.Web.HttpApplication.AsyncEventExecutionStep.OnAsyncEventCompletion(IAsyncResult ar)

当我在 localhost 上打开同一个 WS 时,一切正常。

我什至不知道从哪里开始寻找问题的根源。

是IIS配置、安装模块、项目代码有问题吗?

如何找出已添加的具有相同密钥的项目?即使它在 Web.Config 中?在代码中?在数据库中?在包含的模块中?

问题只出现在“/WS/myExchange.svc”,网站其他部分正常。

高级设置:

网站绑定:

【问题讨论】:

  • 为什么要降级?谢谢解释...
  • 抱歉,无法从图片中读取绑定,您能否改为发布文字,谢谢?

标签: c# asp.net-mvc wcf iis binding


【解决方案1】:

一个可能的原因是

  1. 您的 IIS Web 应用程序的高级设置在“启用的协议”中指示“http,https”。
  2. “默认网站”的“站点绑定”没有 https 绑定类型。

https://stackoverflow.com/a/19440427/6996876

【讨论】:

  • (我用打印屏幕更新了问题)不幸的是,您的建议似乎都不是原因:/
【解决方案2】:

检查:

  1. Web.Config 元素可能重复。
  2. 还要检查 IIS 中的应用程序是 32 位还是 64 位。
  3. 应用程序池框架。

【讨论】:

  • Web.Config 中没有重复项(因为本地主机和生产主机都使用相同的 Web.Configs,并且可以在本地运行)。 IIS 中的应用程序是严格的 64 位的,在本地也是如此。应用程序池框架是什么意思?
  • @Tadej 在 IIS 上配置应用程序池时,您可以在 2.0 和 4.0 .Net 框架之间进行选择。可选的 2.0 .NET 框架也涵盖最高版本 3.5。 4.0 涵盖了服务器上最新安装的版本,目前是 4.7.3。 .Net 5.0 即将发布,这可能会增加第三个选项。已安装的框架版本可以在服务器管理器的已安装角色部分中选择或下载。
【解决方案3】:

问题解决了。

在 Web.Config 中,我必须添加部分 system.serviceModel:

   <serviceHostingEnvironment multipleSiteBindingsEnabled="true"/>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-03-07
    • 2011-01-27
    • 2021-08-02
    • 2011-03-01
    • 2017-11-17
    • 1970-01-01
    相关资源
    最近更新 更多