【发布时间】:2014-03-25 12:23:44
【问题描述】:
我有一个使用旧 WCF 服务环境的站点和一个使用较新环境的新站点。
当我说环境时,我指的是 WCF 服务 dll,它们公开相同的合同和方法,但它们以不同的方式实现。
看来我不能为这种设置使用相同的服务器 (IIS),因为尝试使用较新的站点会产生错误,并且我注意到流量被重定向到旧的 WCF 环境。 (我检查了我的网站配置和绑定,一切都 100% 好)。
我的问题是是否可以使用相同的命名联系人设置 2 个站点? 在我看来,它没有,即使它们是由服务地址区分的。
服务器(旧):
<service name="Services.API.AnonymousUserService" behaviorConfiguration="ProductionBehavior">
<host>
<baseAddresses>
<add baseAddress="net.tcp://old.mysite.com:808/AnonymousUserService.svc" />
</baseAddresses>
</host>
<endpoint name="tcp"
address=""
binding="netTcpBinding" bindingConfiguration="ProductionBinding"
contract="Services.API.IAnonymousUserService" />
<endpoint name="mex"
address="mex"
binding="mexTcpBinding"
contract="IMetadataExchange" />
</service>
客户(旧)
<client>
<endpoint name="tcp"
address="net.tcp://old.mysite.com/AnonymousUserService.svc"
binding="netTcpBinding" bindingConfiguration="ProductionBinding"
contract="ServiceAnonymousUser.IAnonymousUserService">
<identity>
<servicePrincipalName value="host/production01.local" />
</identity>
</endpoint>
</client>
服务器(新):
同Server(旧),只是地址是“net.tcp://new.mysite.com:808/AnonymousUserService.svc”
客户(新):
同Client(旧),只是地址是“net.tcp://new.mysite.com/AnonymousUserService.svc”
【问题讨论】:
-
如果在同一台机器上。您必须更改端口号。他们都使用同一个端口。
-
Tan,我已经尝试了您的建议,但我的新站点仍在使用旧服务,无视端口差异。我的新服务已关闭(站点和应用程序池),并且我的新站点具有引用新站点的客户端配置。我对这件事完全一无所知。
-
你能在你使用服务代理的地方放一些代码吗?也许您指向的是设置文件中的旧服务。
-
我正在使用 StructureMap 来处理实例化。 x.For
().Use(new AnonymousUserServiceClient());如果我从站点的 web.config 中删除 标记,我会收到 StructureMap 202 错误,这意味着它无法实例化它(这很好)。 -
在客户端进行服务调用之前放置一个断点,并检查端点地址。如果是已部署的环境,请使用 wireshark
标签: wcf