2009-09-02 70 views
2

我正在嘗試編寫一個實現WCF的可重用的.NET程序集。如何在ASP.NET中實現WCF REST

我目前的問題是如何接受程序集(適當裝飾有ServiceContract,DataContract和WebGet屬性),並在現有的ASP.NET WebForms應用程序中引用它並使用REST公開它。

理想情況下,我喜歡JQuery兼容Bare XML,JSON和SOAP WebServices的不同端點,但現在我很樂意讓Bare XML工作。現在我所得到的是404資源無法找到)。

另一個問題是API有很多方法。因此,創建一個包裝程序集的svc文件是很痛苦的。

這是我在system.serviceModel我的web.config

所以,一旦我得到這個工作,然後我可以理論上編寫一個通過netTcp託管這個程序集的.NET控制檯應用程序。

的只有3個,我發現實現這個是 我想出了3點可能的方式來做到這一點

    創建環繞我的`WcfService1.WcfService`並實現調用一個新的SVC文件的方法`WcfService1.ITest`並在標記中加入適當的Factory屬性。這是 而不是
    另一種方法是在某處(我使用Global.asax?)創建一個`WebServiceHost`類,儘管我不知道如何去做,或者如果這是一個有效的解決方案。
    使用ASP.NET MVC實現一個解決方案,但我認爲與svc方法相同的問題將發揮作用。

在此先感謝您的幫助。

回答

2

通常,你需要兩樣東西:

  • 創建和編譯服務爲裝配
  • 找到一種方法,以託管服務(IIS中,自託管的控制檯應用程序)

我相信你已經完成了第一步,所以現在你需要決定在哪裏舉辦這個活動。

在IIS
託管在這種情況下,你需要在一個虛擬目錄裏創建一個「MyService.svc」的文件,並指定「WebServiceHostFactory」爲主機廠 - 這就是它!

創建一個文件「我的服務。SVC」在某處的虛擬目錄,並使用此內容:

<%@ ServiceHost Language="C#" Debug="True" 
    Service="YourNamespace.YourService" 
    Factory="System.ServiceModel.Activation.WebServiceHostFactory" %> 

這應該是所有你需要做的 - 新的.NET 3.5 WebServiceHostFactory通吃其餘的工作

自託管。
在這種情況下,你需要創建一個主EXE - 無論是一個控制檯應用程序或Windows服務中,你會實例化WebServiceHost和加載服務類 - 這基本上所有有:

WebServiceHost wsh = 
    new WebServiceHost(typeof(YourNamespace.YourService), 
        new Uri("http://localhost/YourServiceBaseUrl")); 
wsh.Open(); 

那麼你的問題在哪裏? :-)你已經下定決心託管了嗎?

當您的REST服務啓動並運行後,任何應用程序和項目都應該能夠通過導航到基本服務URL(可以是您在創建時指定的URL並在自承載中打開WebServiceHost)來使用它,或者虛擬目錄的路徑在您MyService.svc文件生命(包括* .svc文件 - 例如像

http://localhost/VirtualDir/YourService.svc 

有一個非常好的screencast series by Aaron Skonnard可在網上,顯示了WCF REST入門套件的各個方面和如何在您的項目中使用它非常容易。強烈推薦!

馬克