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

时间:2012-09-02 23:13:17

标签: asp.net wcf iis web-config iis-7.5

用于ASP.NET或WCF的Visual Studio项目通常与IIS应用程序一对一分配。但是,例如,如果我想在IIS中的同一appdomain中托管两个WCF项目呢?这意味着我将两个Visual Studio WCF项目分配给单个IIS应用程序。

我开始试试这个,然后遇到了first error message。我seen comments建议“不要这样做”。但在我的情况下,我实际上希望这样做。我不介意这是否意味着IIS应用程序有三个Web配置(一个位于IIS应用程序的根目录,另外两个位于它包含的“项目”文件夹中),或者它是否意味着只有一个用于IIS应用程序的Web配置。

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

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

上面第二个选项的变体几乎奏效了。我收到的最后一条错误信息是:

  
    

在ServiceHost指令中作为Service属性值提供的类型'Sample.ServiceGroupAlpha.ServiceAlpha',或在配置元素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项目/二进制文件”。请假设我不想要那个答案。

1 个答案:

答案 0 :(得分:1)

关注WCF,此时我认为最接近的答案是使用并让多个VS "WCF Service Library" projects都参与一个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" %>

我不再有时间或需要尝试这个,但似乎上述调整将处理我在问题中提出的最后一个问题。