對於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項目/二進制文件」。請假設我也不想要那個答案。