2011-03-08 74 views
3

我想創建一個WCF服務,用於我的ASP.Net網站(不是項目),該服務沒有隱藏文件,這是傳統asmx樣式服務的選項, 't 出現將用於wcf服務,或將其代碼存儲在單獨的代碼項目中,並僅由svc文件公開。沒有App_Code的ASP.Net WCF服務

我試着將代碼文件從app_code移動到我單獨的項目中,但無法弄清楚如何鏈接它們,因爲立即從svc文件中刪除codebehind屬性會引發錯誤。

+1

這就是爲什麼不使用網站進行認真的工作。順便說一句,使用Web服務是一項嚴肅的工作。 – 2011-03-08 17:24:01

+0

如果您想在您的網站外部託管/隔離該服務,您應該着眼於構建WCF服務應用程序。 – Zachary 2011-03-08 17:29:50

回答

6

你可以有你的SVC文件在Web項目點到包含在一單獨的DLL類。您不必在您的App_Code目錄中擁有SVC「代碼」。這很容易做到。您的SVC文件只需要一個屬性 - Service。下面是我使用的示例:

<%@ ServiceHost Service="My.Qualified.Service.Class.Name" %> 

我在App_Code文件夾中沒有任何代碼。這個SVC的所有邏輯都包含在一個單獨的DLL中(恰好是My.Qualified.Service.Class.dll)。我的服務名稱是實施類的名稱;這是唯一的警告。

我的web.config(內system.serviceModel)引用像這樣這樣的服務:

<service name="My.Qualified.Service.Class.Name"> 
    <endpoint address="" 
    binding="webHttpBinding" 
    contract="My.Qualified.Service.Class.IName" /> 
</service> 

我服務的邏輯是直截了當的WCF代碼之後。我的IName界面定義了我的操作; Name實現它們。

我希望這有助於!

+0

這看起來不錯,除了......有無論如何,我可以擺脫與web.config中的參考(就像你可以使用asmx文件)?那麼,asmx文件有一個全局條目 Peter 2011-03-08 19:00:16

+0

嗯...自從我使用asmx文件以來已經有一段時間了。我想你可以在代碼中配置WCF服務。只是好奇,爲什麼你不想在你的配置中配置服務? – 2011-03-08 19:03:44

+0

我們有一個ASP.Net網站,我們稱之爲「殼」。我們在這個shell中「託管」幾個定製實用程序/應用程序。它們都共享一個基礎主頁,app_theme,日誌記錄/安全功能等等。由於這些代碼由多個開發人員維護並支持很多系統,因此我們儘量保持每個應用程序的獨立性(保留所有頁面,用戶控件, Web服務在一個文件夾中)。 DLL仍然在Bin目錄中,但這與我們的重疊程度相同。 – Peter 2011-03-09 14:47:58

0

這是一段視頻,演示如何以(我認爲)允許您按照您詢問的方式實現WCF。您可以分開您的合同,服務等,以便您可以輕鬆地重複使用您的服務。你需要能夠添加引用,所以也許將網站轉換爲網絡應用程序可能是最好的。這將允許您的服務保持在一個單獨的項目中,並在引用您的服務項目DLL後簡單地將其展示在您的Web應用程序中。

http://www.dnrtv.com/default.aspx?showNum=122