簡體   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