尝试将WCF应用程序上载到服务器时出错

本文关键字:服务器 出错 上载 应用程序 WCF | 更新日期: 2023-09-27 18:23:37

我正试图在web服务器上托管我的WCF应用程序。我收到这个错误,但它在我的本地系统中运行良好

错误

此集合已包含一个方案为http的地址。那里此集合中每个方案最多只能有一个地址。如果您服务托管在IIS中,您可以通过设置'system.serviceModel/serviceHostingEnvironment/multipleSiteBindingsEnabled'为true或指定"system.serviceModel/serviceHostingEnvironment/baseAddressPrefixFilters"。

参数名称:项目

描述:在执行当前web请求期间发生未处理的异常。请查看堆栈跟踪以了解更多信息有关错误的信息以及错误在代码中的来源。

异常详细信息:System.ArgumentException:此集合已包含方案为http的地址。最多可以有此集合中的每个方案一个地址。如果您的服务托管在IIS中,您可以通过设置'system.serviceModel/serviceHostingEnvironment/multipleSiteBindingsEnabled'为true或指定"system.serviceModel/serviceHostingEnvironment/baseAddressPrefixFilters"。参数名称:项目

源错误:

在执行期间生成了未处理的异常当前web请求。关于可以使用下面的异常堆栈跟踪来识别异常。

堆栈跟踪:

[ArgumentException:此集合已包含一个地址scheme http。在这个方案中,每个方案最多只能有一个地址收集如果您的服务托管在IIS中,则可以修复设置问题'system.serviceModel/serviceHostingEnvironment/multipleSiteBindingsEnabled'为true或指定"system.serviceModel/serviceHostingEnvironment/baseAddressPrefixFilters"。参数名称:item]
System.ServiceModel.UriSchemeKeyedCollection.InsertItem(Int32索引,Uri项目)+12089046
System.Collections.Generic.SynchronizedCollection`1.Add(T项)+78
System.ServiceModel.UrySchemeKeyedCollection.ctor(Uri[]地址)+72 System.ServiceModel.ServiceHost.ctor(类型serviceType,Uri[]baseAddresses)+141
System.ServiceModel.Activation.ServiceHostFactory.CreateServiceHost(类型serviceType,Uri[]baseAddresses)+30
System.ServiceModel.Activation.ServiceHostFactory.CreateServiceHost(字符串constructorString,Uri[]baseAddresses)+420
System.ServiceModel.HostingManager.CreateService(字符串normalizedVirtualPath)+1440
System.ServiceModel.HostingManager.ActivateService(字符串normalizedVirtualPath)+44
System.ServiceModel.HostingManager.EnsureServiceAvailable(字符串normalizedVirtualPath)+615

[ServiceActivationException:服务'/GUIService.svc'不能为由于编译期间出现异常而激活。例外情况消息为:此集合已包含具有方案的地址http:。此集合中的每个方案最多只能有一个地址。如果您的服务托管在IIS中,您可以通过以下方式解决问题背景'system.serviceModel/serviceHostingEnvironment/multipleSiteBindingsEnabled'为true或指定"system.serviceModel/serviceHostingEnvironment/baseAddressPrefixFilters"。参数名称:item。]System.Runtime.AsyncResult.End(IAsyncResult结果)+679246
System.ServiceModel.Activation.HostedHttpRequestAsyncResult.End(IAsyncResult结果)+190
System.ServiceModel.Activation.ServiceHttpModule.EndProcessRequest(IAsyncResultar)+300622
System.Web.AsyncEventExecutionStep.OnAncEventCompletion(IAsyncResultar)+8837348

有人能帮我解决这个问题吗。

尝试将WCF应用程序上载到服务器时出错

SO的原始帖子:WCF服务启动错误"此集合已经包含一个具有方案http"的地址;。

请在发布问题之前进行搜索。

您可以查看以下解决方案

  • 代码解决方案:此处
  • 配置解决方案:此处

我会建议你采用配置解决方案,很容易随时更改。

检查如何更改您的应用程序web配置:

<system.serviceModel>
    <serviceHostingEnvironment>
        <baseAddressPrefixFilters>
            <add prefix="net.tcp://payroll.myorg.com:8000"/>
            <add prefix="http://shipping.myorg.com:9000"/>
        </baseAddressPrefixFilters>
    </serviceHostingEnvironment>
</system.serviceModel>

在上述例子中,网tcp://payroll.myorg.com:8000和http://shipping.myorg.com:9000是只有基地址,用于各自的方案允许通过。这个baseAddressPrefixFilter没有支持任何通配符。

IIS提供的baseAddresses可能将地址绑定到其他方案baseAddressPrefixFilter中不存在列表这些地址将不会过滤掉。

Dns解决方案(未测试):我认为,如果您创建了一个特定于web应用程序的新dns条目,添加了一个新网站,并为其提供了一个与dns条目匹配的主机头,那么您就可以完全缓解这个问题,并且不必编写自定义代码或向web.config文件添加前缀。

通过以下链接,您的问题就会得到解决。在这些链接中也解决了同样的问题。

WCF服务启动错误";该集合已经包含一个具有方案http"的地址;

WCF 中的服务器错误

我建议检查您的web配置文件层次结构,以确认您没有使用"无地址"的多个端点。