我目前正在Windows Azure中的Web角色上实现WCF REST服务,我正在尝试在角色的实例之间添加一些通信,这样他们就可以在比较某些数据时保持彼此更新在blob存储中更新。我想要做的是在Web角色的外部和内部HTTP端点上托管相同的WCF服务。但是,根据我的阅读,在IIS中托管时,WCF仅限于每个协议只有一个基址。当我为我的角色启用内部HTTP端点并尝试使用WebServiceHostFactory启动我的服务时,这是我得到的错误:
此集合已包含 地址与方案http。有可以 每个计划最多一个地址 这个系列。
参数名称:item
我用Google搜索了一下,the one workaround I've seen在各个地方建议在web.config中添加baseAddressPrefixFilter。但是,如果在运行应用程序之前我不知道任一端点的完整URL,我不知道如何使其工作。
或者,这个问题似乎只限于IIS托管,所以我可以在Azure中使用一些其他托管方法吗?我认为在任何IIS上下文之外的自托管或任何不够强大/安全的东西,但我不确定。
有谁知道如何解决这个问题?想要在Web角色的两个端点上托管Web服务似乎是很常见的事情。我对WCF比较陌生,所以可能会有一些我不知道的东西。任何帮助表示赞赏。
答案 0 :(得分:0)
我终于在星期五弄明白了。我稍后会尝试提供更详细的答案和/或博客,但就目前而言,这里是我提出的解决方案的摘要:
using (new OperationContextScope((IContextChannel)myClientFromChannelFactory))
{
myClientFromChannelFactory.MyServiceMethod();
}
我问similar question on the MSDN Windows Azure forums并获得了一些信息,因此可能会有更多有用的信息。
希望能帮助那些遇到同样问题的其他人。