2014-11-21 169 views
1

我已經編寫了一個WCF服務,負責訪問MySQL數據庫,並最終編寫一個消費該服務的C#客戶端應用程序。如何託管並連接到連接到數據庫的遠程WCF服務?

但是我希望客戶能夠遠程訪問服務。爲此,什麼是託管/端點配置的理想方法和/或如何從遠程客戶端訪問服務。

我已閱讀了以下教程和其他一些教程,但仍不太瞭解應用程序域,託管,遠程訪問概念,我也不知道如何遠程連接。

http://msdn.microsoft.com/en-us/library/bb332338.aspx
Can a client remotely access WCF self-hosting Service?

任何好的教程,示例代碼,建議或想法還是我吠叫完全錯了?

在此先感謝

+0

感謝您的鏈接,我目前正在按照教程來設置IIS,我會讓你知道我是如何繼續前進的。 – 2014-11-21 23:13:33

回答

0

我已經看到這種情況,最好的辦法是主辦IIS服務,最好是IIS 7的集成。

這是在IIS上託管WCF服務的鏈接。 http://msdn.microsoft.com/en-us/library/ms733766%28v=vs.110%29.aspx

託管服務實際上相對簡單,只需幾分鐘。

然後,您可以通過向C#項目添加服務引用來引用託管服務,或甚至通過點擊發現(如果尚未託管)來本地引用。如果你有它託管,然後添加您在IIS 7中定義的URL。如果您沒有託管,只需將WCF服務和C#項目放在同一個解決方案下,然後點擊發現。

以下是用於向項目添加服務引用的鏈接。 http://msdn.microsoft.com/en-us/library/bb628652.aspx

您將要建立一個app.config文件或web.config文件,這取決於你的類型的應用程序,讓您可以定義你的C#項目將如何與您的服務進行交互。什麼是我的數據請求長度,超時,緩衝區大小,流式傳輸或緩衝傳輸等。

樣品:

<bindings> 
    <binding name="MyBindingConfiguration" closeTimeout="00:30:00" 
     openTimeout="00:30:00" receiveTimeout="00:30:00" sendTimeout="00:30:00" 
     allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard" 
     maxBufferPoolSize="2147483647" maxBufferSize="2147483647" maxReceivedMessageSize="2147483647" 
     textEncoding="utf-8" transferMode="Buffered" useDefaultWebProxy="true" 
     messageEncoding="Text"> 
</bindings> 
<client> 
     <endpoint address="http://localhost:55010/MyService.svc" 
     binding="basicHttpBinding" bindingConfiguration="MyBindingConfiguration" 
     contract="IMyWcfInterface"/> 
</client> 

讓我知道,如果這有助於。

+0

我已經安裝IIS,如圖所示,但當我去添加一個應用程序到默認網站時,我得到一個「無效的應用程序路徑」錯誤。 – 2014-11-22 11:03:21

+1

在否定了由於未正確安裝以及稍微錯誤配置而導致的各種服務器錯誤之後,我現在有一個似乎可以正常工作的服務(我可以連接它並在瀏覽器中獲得正確的頁面)。我很快就會設置客戶端,但看起來更容易。感謝您對此的指導。 – 2014-11-22 23:07:07

+0

是否有可能允許用戶在運行時更改他們希望連接的服務的地址而不使用SOAP,前提是他們使用相同的代碼和asp.net版本來運行該服務,只是在不同的地址? – 2014-11-23 21:32:30

0

對於託管,我會推薦使用IIS和http綁定,該機制與託管Web應用程序類似。關於訪問IIS託管的wcf服務,您只需要向客戶端應用程序添加服務引用(它將自動生成可用於訪問服務的代理類)。你可以找到更多的細節here

相關問題