2011-10-07 108 views
0

我的筆記本電腦上有一個Windows服務,它託管着WCF服務。我想在我的ASP.NET網站上使用這些服務,該網站位於外部ASP.NET服務器上。如何在互聯網上發佈WCF服務(在wnd服務中託管)

你能幫幫我,怎麼做?

是否需要特定的筆記本電腦配置?我應該配置什麼?

和綁定,什麼類型將足夠? ..現在,我已經有了:

<service behaviorConfiguration="WcfServices.InfoBehavior" name="MyProgram.WcfServices.Info.Info"> 
    <endpoint address="" binding="wsHttpBinding" contract="MyProgram.WcfServices.Info.IInfo"> 
     <identity> 
     <dns value="localhost" /> 
     </identity> 
    </endpoint> 
    <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" /> 
    <host> 
     <baseAddresses> 
     <add baseAddress="http://localhost:8732/Info/" /> 
     </baseAddresses> 
    </host> 
    </service> 

UPDATE: 現在,我的客戶端應用程序仍然在我的筆記本電腦(它沒有公佈尚未)。這是我的客戶端代碼:

<client> 
    <endpoint address="http://localhost:8732/Info/" binding="wsHttpBinding" 
    bindingConfiguration="WSHttpBinding_IInfo" contract="ServiceInfo.IInfo" 
    name="WSHttpBinding_IInfo"> 
    <identity> 
     <dns value="localhost" /> 
    </identity> 
    </endpoint> 
</client> 

我不知道,什麼綁定使用什麼端口,應該在我的筆記本電腦上更改什麼設置?

+0

我不認爲是一個好主意,如果LapTop關閉或斷開連接,ASP.NET網站仍然可以正常工作?無論如何,從綁定可能這不是最好的:localhost:8732,實際上你應該顯示客戶端配置不是服務器。向我們展示如何從ASP.NET web.config文件引用筆記本電腦的服務 –

+0

好吧,Web應用程序僅顯示有關運行Windows服務的一些信息。當wnd服務停止時,有關於網絡的說明。這是我的個人網頁,而不是公共門戶。 – Marshall

回答

1

除非你的筆記本電腦有自己的固定IP地址暴露在外(最不可能),我認爲你會很難直接做到這一點。

您可能會考慮使用Azure Service Bus來代理消息交換:我相信這是解決訪問託管在非常量IP地址或防火牆/ NAT後面的服務問題的一種方法。

或者你可以考慮改變你的設計來反其道而行之。也就是說,當它連接並運行時,筆記本電腦服務通過雙工綁定連接到ASP.NET盒子上託管的服務,並將當前服務合同作爲回調協議。

+0

但如果我有一個靜態的,外部IP是可能的?我的意思是,再一次,在一臺機器上,我有一個Windows服務,WCF託管。另一方面,我有一個帶有WCF客戶端的ASP.NET網頁。 – Marshall

+1

是的,當然,如果你確實有一個靜態的外部IP,這是可能的。在配置的服務URL中使用該IP地址結束,並使用您喜歡的端口(在合理範圍內)。您需要確保您的筆記本電腦的入站防火牆已打開該端口,並且您還可能需要檢查主機環境是否沒有任何出站防火牆規則,這些規則會阻止您離開Web服務器的請求。 –

+0

所以,如果我錯了,請糾正我的錯誤。要從我的筆記本電腦上的Windows服務中託管的WCF服務,需要從Internet上的某個外部ASP.NET頁面訪問:1.我的筆記本電腦上的外部靜態IP 2.配置出站和入站規則。而2)我的意思是:開始 - >運行 - > WF。msc->入站規則 - >新規則 - >端口 - > TCP + Specifi本地端口5500->允許連接 - >域名+私人+公共 - >名稱MyWCF ...和出站規則與入站...相同對?最後baseAddress和客戶端端點地址將是:「http://87.xxx.xxx.xxx:5500/Info/」。這就是全部? – Marshall

0

如果您的筆記本電腦上運行的WCF服務通過ServiceHost託管,則需要在ASP.NET web.config文件中複製該配置,並添加一個「service.svc」文件,該文件被引用您的服務的界面。

0

你應該改變localhost與你的筆記本電腦真正面向外部的IP地址,它可以工作,如果你家裏的路由器沒有防火牆。在客戶端和服務器端點地址中更改它。

+0

但是防火牆不可能嗎?我的意思是,沒有防火牆,我的機器不安全,對吧?所以這不是一個好的解決方案,我認爲.. – Marshall