wp8 模擬器 連結本機的 webservice

wp8 模擬器 連結本機的 webservice

我們在寫 wp8 app 的時候,如果需要呼叫到 webservice 的 api,一般都會先開發好 server 部分,

 

然後接著開發 wp8 client,但是這時候如果想要兩邊互相測試,就會遇到一個大問題,那就是 wp8 模擬器連不到 localhost 的 service

 

那是因為 wp8 的模擬器是跑在VM裡的,他有自己內部的 IP,所以在 wp8 app 裡面的 localhost 並不是我們開發 webservice 的電腦。

 

要解決這個問題需要做到下列三個步驟

 

1.找出 wp8 模擬器的 IP

 

image 

 

你可以用 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 即可連到正確的地方了。