總之
如何在Azure上的IIS中託管時在本地主機上訪問WCF服務? Azure不會將localhost或127.0.0.1綁定到我的網站。在Azure上的Localhost上使用WCF
詳細信息
我有一個ASP.Net應用程序託管在Azure上。我已經添加了一個.svc和一些我想通過WCF使用的工作流程。爲了簡單起見,我的web應用程序只需在localhost上調用服務,所以我在web.config中有這樣的端點;
<client>
<endpoint address="http://localhost:8080/Router.svc/Case" binding="basicHttpBinding" contract="NewOrbit.ExVerifier.Model.Workflow.Case.ICaseWorkflow" name="Case" />
<endpoint address="http://localhost:8080/Workflow/Case/Case_default1.xamlx" binding="basicHttpBinding" contract="*" name="Case_default1" />
</client>
這在我的本地機器上工作得很好。問題是,當我將它發佈到Azure時,IIS中的網站沒有獲取到本地主機的綁定,而是綁定始終是服務器的實際IP地址。 它結束了在尋找的applicationHost.config這樣的:我的web應用程序試圖調用(爲此事或127.0.0.1)在本地主機上的服務它立即失敗,儘快
<bindings>
<binding protocol="http" bindingInformation="10.61.90.44:80:" />
<binding protocol="https" bindingInformation="10.61.90.44:443:" />
<binding protocol="http" bindingInformation="10.61.90.44:8081:" />
</bindings>
所以,。不用說,如果我使用服務器並更改綁定,那麼一切都很好。
我覺得很奇怪的是,在那裏人們在Azure的本地主機上訪問WCF服務的例子很多,所以我不明白爲什麼會這樣。我已將osFamily設置爲2,並且爲了調試此功能,我已啓用網絡發佈和遠程桌面訪問,我想在理論上可能會搞砸了。
我已經看過
- 我可以在運行時在我的代碼重寫端點地址來代替本地主機的實際地址或動態創建端點作爲答案由Ron描述。不幸的是我使用WCF路由服務,所以我可以版本化工作流程。這意味着我的代碼調用了路由器端點,並且WCF路由器輪流使用web.config中指定的端點調用實際的服務/工作流。我沒有沒有,我覺得在路由服務端點解決方案的控制,編寫了一整套路由剛剛似乎是一個大量的工作時,我要的是調用邏輯的本地主機:)
- 切換到使用命名管道;唉,它會導致工作流程中出現一些奇怪的問題,這可能是由於雙面打印造成的,而且我正處於截止日期之前,所以沒有時間在一分鐘內達到最低限度。
任何人都可以說,爲什麼這個心不是結合已有在創建角色時? – BozoJoe