2012-09-02 102 views
2

對於ASP.NET或WCF,Visual Studio項目通常與IIS應用程序一對一分配。但是,如果我想讓兩個WCF項目託管在IIS中的同一個appdomain中呢?這意味着我將有兩個Visual Studio WCF項目分配給單個IIS應用程序。一個IIS應用程序中的多個Web/WCF項目

我開始嘗試一下,並跑到first error message。我有seen comments建議「不要這樣做」。但在我的情況下,我實際上想要來做到這一點。我不介意這是否意味着IIS應用程序有三個Web配置(一個位於IIS應用程序的根目錄,另外兩個位於它包含的「項目」文件夾中),或者如果這意味着只有一個Web配置用於IIS應用程序。

所以對於我的兩個Visual Studio的WCF項目,我周圍的web.config內容通過多種方式洗牌:

  • 一個IIS應用程序,在物理目錄指向在我的Visual Studio解決方案文件找到。兩個WCF項目分別位於兩個子文件夾中
  • 一個IIS應用程序指向某個任意的物理位置,其中包含兩個分別指向兩個WCF項目物理目錄的虛擬目錄。我在這裏有三個Web配置文件:一個用於IIS應用程序根目錄,另外兩個位於虛擬目錄中。

以上第二個選項的變體幾乎奏效。我得到的最終誤差信息是:

類型「Sample.ServiceGroupAlpha.ServiceAlpha」,在配置元件提供爲ServiceHost的指令中的服務的屬性值,或提供system.serviceModel/serviceHostingEnvironment/serviceActivations找不到。
說明:執行當前Web請求期間發生未處理的異常。請查看堆棧跟蹤以獲取有關該錯誤的更多信息以及源代碼的位置。
異常詳細信息:System.InvalidOperationException:無法找到作爲ServiceHost指令中的Service屬性值提供或者在配置元素system.serviceModel/serviceHostingEnvironment/serviceActivations中提供的類型'Sample.ServiceGroupAlpha.ServiceAlpha'。

這促使我看ServiceHost的指令,和(害羞地)修改:

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

...注意到CodeBehind屬性有我添加了一個相對路徑(的名字虛擬目錄)。那麼,這沒有奏效,但我不禁想到我已經接近完成這項工作。我想知道是否有人有修補程序,或者可以傳遞「正確」的方式來完成這件事。

最終的答案可能是,在同一個IIS應用程序中不存在兩個單獨的Web/WCF項目;如果是這樣,我會很驚訝。另一個答案可能是「將兩個WCF項目合併爲一個Visual Studio項目/二進制文件」。請假設我也不想要那個答案。

回答

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" %> 

我不再有時間或需要嘗試這一點,但它似乎上述調整將處理最後一個問題,我提出了我的問題。

相關問題