我正在尝试在Web服务器上托管我的WCF应用程序。我收到此错误,但它在我的本地系统中运行良好
错误
此集合已包含方案http的地址。那里 在此集合中,每个方案最多只能有一个地址。如果你的 服务正在IIS中托管,您可以通过设置来解决问题 'system.serviceModel / serviceHostingEnvironment / multipleSiteBindingsEnabled' 为真或指定 'system.serviceModel / serviceHostingEnvironment / baseAddressPrefixFilters'。
参数名称:item
描述:在执行当前Web请求期间发生了未处理的异常。请查看堆栈跟踪了解更多信息 有关错误的信息以及它在代码中的起源。
异常详细信息: System.ArgumentException:此集合已包含方案http的地址。最多可以 此集合中每个方案的一个地址。如果你的服务正在 在IIS中托管,您可以通过设置来解决问题 'system.serviceModel / serviceHostingEnvironment / multipleSiteBindingsEnabled' 为真或指定 'system.serviceModel / serviceHostingEnvironment / baseAddressPrefixFilters'。 参数名称:item
来源错误:
执行期间生成了未处理的异常 当前的网络请求。有关的来源和位置的信息 可以使用下面的异常堆栈跟踪来识别异常。
堆栈追踪:
[ArgumentException:此集合已包含一个地址 计划http。每个方案最多只能有一个地址 采集。如果您的服务是在IIS中托管,则可以修复 设置问题 'system.serviceModel / serviceHostingEnvironment / multipleSiteBindingsEnabled' 为真或指定 'system.serviceModel / serviceHostingEnvironment / baseAddressPrefixFilters'。 参数名称:item]
System.ServiceModel.UriSchemeKeyedCollection.InsertItem(Int32 index, Uri项目)+12089046
System.Collections.Generic.SynchronizedCollection`1.Add(T item)+78
System.ServiceModel.UriSchemeKeyedCollection..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'不能 由于编译期间的异常而激活。例外 消息是:此集合已包含带有scheme的地址 HTTP。此集合中每个方案最多只能有一个地址。 如果您的服务是在IIS中托管,则可以通过以下方式解决问题 设置 'system.serviceModel / serviceHostingEnvironment / multipleSiteBindingsEnabled' 为真或指定 'system.serviceModel / serviceHostingEnvironment / baseAddressPrefixFilters'。 参数名称:item。] System.Runtime.AsyncResult.End(IAsyncResult 结果)+679246
System.ServiceModel.Activation.HostedHttpRequestAsyncResult.End(IAsyncResult的 结果)+190
System.ServiceModel.Activation.ServiceHttpModule.EndProcessRequest(IAsyncResult的 ar)+300622
System.Web.AsyncEventExecutionStep.OnAsyncEventCompletion(IAsyncResult的 ar)+8837348
任何人都可以帮我解决这个问题。
答案 0 :(得分:3)
来自SO的原帖:WCF service startup error "This collection already contains an address with scheme 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>
在上面的例子中, net.tcp://payroll.myorg.com:8000和 http://shipping.myorg.com:9000是。{ 只有基地址,因为他们的 各自的计划,将是 允许通过。该 baseAddressPrefixFilter没有 支持任何通配符。
IIS提供的baseAddresses可能 有地址绑定到其他方案 不存在于baseAddressPrefixFilter中 名单。这些地址不会 过滤掉了。
Dns解决方案(未经测试): 我认为,如果您创建了一个特定于您的Web应用程序的新dns条目,添加了一个新的网站,并为其提供了与dns条目匹配的单个主机标头,您将完全缓解此问题,并且不必编写自定义代码或在web.config文件中添加前缀。
答案 1 :(得分:0)
通过以下链接,您将解决您的问题。在这些链接中解决了同样的问题。
WCF service startup error "This collection already contains an address with scheme http"
我建议您检查您的网络配置文件层次结构,以确认您没有使用“无地址”的多个端点。