wp8 模擬器 連結本機的 webservice
我們在寫 wp8 app 的時候,如果需要呼叫到 webservice 的 api,一般都會先開發好 server 部分,
然後接著開發 wp8 client,但是這時候如果想要兩邊互相測試,就會遇到一個大問題,那就是 wp8 模擬器連不到 localhost 的 service
那是因為 wp8 的模擬器是跑在VM裡的,他有自己內部的 IP,所以在 wp8 app 裡面的 localhost 並不是我們開發 webservice 的電腦。
要解決這個問題需要做到下列三個步驟
1.找出 wp8 模擬器的 IP
你可以用 ipconfig 指令找到。這裡的例子是 169.254.205.2。
2.修改 IIS Express 的 applicationhost.config 檔案
他在 C:\Users\<USER>\Documents\IISExpress\config 目錄底下
打開這個檔案,找到 sites 元素裡的 site 元素,
如果你已經啟動過 webservice 你應該會在你自己網頁找到類似下方的設定
<site name="USER_WEB_NAME" id="24">
<application path="/" applicationPool="Clr4IntegratedAppPool">
<virtualDirectory path="/" physicalPath="c:\XXX" />
</application>
<bindings>
<binding protocol="http" bindingInformation="*:32154:localhost" />
</bindings>
</site>
USER_WEB_NAME 就是你 webservice 的專案名稱
在 bindings 裡面再加入一行 binding 如下:
<site name="USER_WEB_NAME" id="24">
<application path="/" applicationPool="Clr4IntegratedAppPool">
<virtualDirectory path="/" physicalPath="c:\XXX" />
</application>
<bindings>
<binding protocol="http" bindingInformation="*:32154:localhost" />
<binding protocol="http" bindingInformation="169.254.205.2:32154:" />
</bindings>
</site>
然後儲存檔案。
3.將 IIS Express 關閉,並且以系統管理員的身分開啟 visual studio ,重新啟動 webservice 專案。
如果可以在瀏覽器將 localhost:32154 改成 169.254.205.2:32154 ,一樣找的到網頁的話那就成功了。
如果不行,檢查一下是不是防火牆擋住了。
4.將 wp8 app 的 webservice 的 ip 位址改成 169.254.205.2:32154 即可連到正確的地方了。