我们的组织有多个 WCF Web 服务需要作为它们自己的应用程序托管,但我们希望从单个子域提供服务。
webservs.domain.edu/service1/
webservs.domain.edu/service2/
service1 和 service2 子目录在主 (webservs) 文件夹中设置为它们自己的应用程序。问题是,因为子目录是它们自己的应用程序(这是必要的,因为服务都是独立的项目,具有非常不同的功能/代码库)它们无法识别正确的目录结构。
在wsdl文档中,schemaLocation是:
<xsd:import schemaLocation="http://server.department.domain.edu/service1/Service.svc?xsd=xsd0">
但是,正确的路径是:
<xsd:import schemaLocation="http://server.department.domain.edu/webservs/service1/Service.svc?xsd=xsd0">
有人建议将 serviceBehavior httpGetUrl 属性设置为正确的路径,但是当我这样做时,我抛出了一个异常:'A registration already exists for URI'。
有没有人遇到过这个问题或者对如何实现这个有任何想法?
最佳答案
您需要将每个适当的服务定义为 IIS 中“webservs”虚拟目录(即嵌套在其下)中的应用程序。如果您已经这样做了,您应该能够通过调用 http://server.department.domain.edu/webservs/service1/Service.svc?wsdl 来检索 wsdl。
如果这有效,但 schemaLocation 仍然错误,请查看此线程:http://forums.silverlight.net/t/20767.aspx/1
关于c# - 在子目录中托管 WCF Web 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8318109/