更新3:
我创建了一个Visual Studio 2008测试项目,并尝试创建对共享站点WCF服务引用的服务引用,并收到以下错误:
下载时出错 'http://apps.mydomain/MyService.svc'。 请求因HTTP状态而失败 400:错误请求。元数据包含一个 无法解决的参考: 'http://apps.mydomain/MyService.svc'。 内容类型application / soap + xml; charset = utf-8不受支持 服务 http://apps.mydomain/MyService.svc”。 客户端和服务绑定可能是 不匹配。远程服务器返回 错误:(415)无法处理 消息因为内容类型 “应用程序/肥皂+ xml的;字符集= UTF-8' 不是预期的类型'text / xml; charset = utf-8'..如果服务是 在当前的解决方案中定义,试试 构建解决方案并添加 服务参考。
更新2:
@Nick - 我尝试过你的建议,明确地用每个服务器的完全限定路径设置每个端点的地址,我仍然得到相同的结果。
此外,当我尝试使用共享站点URL设置listenUri属性时,出现400错误请求错误而不是404错误。
更新的
经过一些额外的研究后,http://apps1.mydomain和http://apps2.mydomain之间存在一些IIS配置设置冲突,并且能够超越“服务器应用程序不可用”错误。
现在,当我尝试浏览共享网站(http://apps.mydomain)时出现404错误,但我可以浏览http://apps1.mydomain和http://apps2.mydomain服务参考。< / p>
原始问题
我的公司使用Microsoft NLB来加载我们的IIS服务器之间的流量平衡。我最近在每个IIS 6 Windows Server 2003 Standard Edition SP1服务器上部署了一个WCF服务。当我尝试使用IE 7浏览到共享域名时收到以下错误:
服务器应用程序不可用 您正在尝试的Web应用程序 目前在此Web服务器上访问 不可用。请点击“刷新” 您的Web浏览器中的按钮重试 你的申请。
管理员注意:错误消息 详细说明这一具体原因 请求失败可以在 Web的应用程序事件日志 服务器。请查看此日志条目 发现导致此错误的原因 发生。
消费者将指向http://apps.mydomain以使用该服务,但虚拟域将映射到http://apps1.mydomain或http://apps2.mydomain。如果我浏览到每台服务器上的服务,我都不会收到该错误。
该服务目前正在使用匿名basicHttpBinding。
还有其他人遇到过这个问题吗?
历史
在此错误开始之前,当我浏览到所有三个域名(http://apps.mydomain,http://apps1.mydomain,http://apps2.mydomain)时,我收到以下错误:
此集合已包含 地址与方案http。有可以 每个计划最多一个地址 这个系列。
我使用ServiceHostFactory类来自定义.svc文件以指定自定义服务工厂。然后我通过继承ServiceHostFactory并根据需要覆盖来创建我们的自定义工厂。
public class MyFactory : ServiceHostFactory
{
protected override ServiceHost CreateServiceHost(Type serviceType, Uri[] baseAddresses)
{
return new ServiceHost(serviceType, baseAddresses[0]);
}
}
<%@ ServiceHost Language="C#" Factory="MyFactory" Debug="true" Service="MyService" CodeBehind="~/App_Code/MyService.cs" %>
答案 0 :(得分:2)
在我的WCF服务和使用应用程序的不同配置进行了一些实验之后。我在使用应用程序中创建了对其中一个工作服务引用(http://apps1.mydomain或http://apps2.mydomain)的服务引用。然后我将客户端配置中的端点引用更改为指向共享站点WCF地址(http://apps.mydomain),然后我就可以使用和使用该服务。
答案 1 :(得分:1)
我之前遇到过WCF和负载均衡问题,其中服务器有多个具有不同IP地址的网卡,而WCF只会记录它找到的第一个IP地址。我们必须在每个服务器的服务定义上明确设置IP地址,以便WCF绑定到正确的服务定义。