【发布时间】:2012-09-13 14:17:22
【问题描述】:
我需要在 IIS 上具有相同站点的多个虚拟目录上部署相同的 WCF 服务。如果我为所有这些实例使用相同的命名空间,这会导致问题吗?
【问题讨论】:
标签: wcf iis virtual-directory wcf-routing
我需要在 IIS 上具有相同站点的多个虚拟目录上部署相同的 WCF 服务。如果我为所有这些实例使用相同的命名空间,这会导致问题吗?
【问题讨论】:
标签: wcf iis virtual-directory wcf-routing
从技术上讲,服务不负责其托管,即 .svc 文件(或配置中的服务条目)。您应该没有任何问题,因为每个实例都位于不同的端点。人们甚至在同一个虚拟目录中也这样做,在每个端点使用不同的绑定多次托管相同的服务。例如,我的安全服务在端点托管了相同的服务,但安全性不同,具体取决于您是要使用用户名/密码、Windows Auth 还是现有令牌进行身份验证。
【讨论】:
在 BizTalk 中 - 重复的命名空间很重要,但以 IIS 虚拟目录 作为边界应该没有问题。
您可以通过MVC service routing 使用多个端点注册服务,并完全避免创建虚拟目录。
ServiceHostFactory serviceHost = new ServiceHostFactory();
RouteTable.Routes.Add(new ServiceRoute("SoapService", serviceHost, typeof(SoapService)));
RouteTable.Routes.Add(new ServiceRoute("directory1/SoapService", serviceHost, typeof(SoapService)));
RouteTable.Routes.Add(new ServiceRoute("directory2/SoapService", serviceHost, typeof(SoapService)));
如果您对物理 SVC 文件使用经典服务激活,您应该能够将每个虚拟目录指向 SVC 文件所在的同一物理位置。
【讨论】: