繁体   English   中英

一个IIS应用程序中的多个Web / WCF项目

[英]Multiple Web/WCF Projects in One IIS Application

通常,针对ASP.NET或WCF的Visual Studio项目与IIS应用程序是一对一分配的。 但是,例如,如果我希望将两个WCF项目托管在IIS的同一appdomain中,该怎么办? 这意味着我将把两个Visual Studio WCF项目分配给一个IIS应用程序。

我开始尝试此方法,然后遇到第一条错误消息 看过一些评论,暗示如何“不这样做”。 但就我而言,我实际上是这样做。 我不介意这是否意味着为IIS应用程序提供三个Web配置(一个位于IIS应用程序的根目录,另外两个位于“项目”文件夹中),或者是否意味着仅具有一个IIS应用程序的Web配置。

因此,对于我的两个Visual Studio WCF项目,我以各种方式改编了web.config内容:

  • 一个IIS应用程序,指向找到我的Visual Studio解决方案文件的物理目录。 这两个WCF项目位于两个子文件夹中
  • 一个IIS应用程序,指向某个任意物理位置,其中包含两个虚拟目录,分别指向两个WCF项目物理目录。 我在这里有三个Web配置文件:一个用于IIS应用程序的根目录,另外两个用于虚拟目录。

上面第二种选择的变体几乎奏效。 我得到的最终错误消息是:

找不到类型'Sample.ServiceGroupAlpha.ServiceAlpha',该类型作为ServiceHost指令中的Service属性值提供,或在配置元素system.serviceModel / serviceHostingEnvironment / serviceActivations中提供。
描述 :在执行当前Web请求期间发生未处理的异常。 请查看堆栈跟踪,以获取有关错误及其在代码中起源的更多信息。
异常详细信息 :System.InvalidOperationException:类型'Sample.ServiceGroupAlpha.ServiceAlpha',作为ServiceHost指令中的Service属性值提供,或在配置元素system.serviceModel / serviceHostingEnvironment / serviceActivations中提供。

这促使我查看ServiceHost指令,并(轻易地)对其进行修改:

<%@ ServiceHost Language="C#" Debug="true" Service="Sample.ServiceGroupAlpha.ServiceAlpha" CodeBehind="AlphaServices/ServiceAlpha.svc.cs" %>

...注意, CodeBehind属性具有我添加的相对路径(虚拟目录的名称)。 好吧,这没有用,但是我不禁要以为我快要做好这项工作了。 我想知道是否有人修复了该问题,或者可以中继“正确”的方法来完成整个任务。

最终的答案可能是,在同一个IIS应用程序中不存在两个单独的Web / WCF项目。 如果真是那样,我会感到惊讶。 另一个答案可能是“将两个WCF项目合并为一个Visual Studio项目/二进制文件”。 请假设我也不想要这个答案。

现在,重点关注WCF,我认为最接近的答案是使用并让多个VS “ WCF服务库”项目全部参与单个VS“ WCF服务应用程序”。

如果我在问题中概述的方法是“按原样”运行,我怀疑上述链接可能还会有答案。 代替这个...

<%@ ServiceHost Language="C#" Debug="true" Service="WcfWebService.Service1" 
    CodeBehind="Service1.svc.cs" %> 

我会用这样的东西...

<%@ ServiceHost Language="C#" Debug="true" Service="WcfServiceLibrary.Service1" %>
<%@ Assembly Name="WcfServiceLibrary" %>

我不再有时间或需要尝试此操作,但是上述调整似乎可以解决我在问题中提出的最后一个问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM