2016-11-03 95 views
1

當我嘗試從android模擬器連接到本地主機上的web服務時,出現'連接被拒絕'或'請求不好'。我加入的端口號的防火牆允許連接,我試圖給here建議修改對ApplicationHost.config從xamarin Vs2015 android模擬器連接本地web服務

無論是Web服務和仿真器是相同的(視窗10)的PC上運行。在服務器的web.config我已經下「system.webserver」以下:

<httpProtocol> 
<customHeaders> 
    <clear /> 
    <add name="Access-Control-Allow-Origin" value="*" /> 
    <add name="Access-Control-Allow-Headers" value="Content-Type" /> 
    <add name="Access-Control-Allow-Methods" value="GET, PUT, POST" /> 
</customHeaders> 
</httpProtocol> 

AFAIK模擬器可以找到 Web服務器(我沒有得到一個「未找到」的錯誤),但服務器拒絕連接。

using (WebClient client = new WebClient()) 
    { 
    string json = ......; 
    client.Headers[HttpRequestHeader.ContentType] = "application/json"; 
    //  I have also tried "application/x-www-form-urlencoded"; 
    string result = client.UploadString(UrlBase.urlBase + "SaveLocation", json); 

如果 'UrlBase' 是http://192.168.1.73:60080/Service1.svc/,我得到 '錯誤的請求',這我知道,可導致嚴重的JSON格式。

如果'UrlBase'是遠程服務器,則連接起作用(所以我知道json格式是正確的)。相同的更新dll在遠程和本地服務器上運行。

如果「UrlBase」是http://localhost:60080/Service1.svc/,我得到異常「連接被拒絕」

+0

請出示所使用的代碼和使用地址。 – greenapps

+0

還有什麼不清楚:模擬器和web服務運行在同一臺電腦上嗎?如果你有三臺電腦/筆記本電腦,那麼他們都是他們自己的本地主機。所以如果你談論localhost,那麼我們怎麼知道你的意思? – greenapps

+0

模擬器是它自己的虛擬機,並有它自己的IP,因此localhost引用了模擬器。如果要連接到運行仿真器的PC,請使用它的IP或FQDN。 – Jason

回答

2

我沒有使用任何防火牆規則,因爲我的模擬器是在同一臺機器作爲服務的主機上。正如賈森說你應該使用你的主機IP地址。 爲避免許多問題,請使用本地IIS主機而不是IIS Express。您的「錯誤請求」不是無效的Json而是無效的主機名,因爲IIS Express不允許任何連接,而是來自本地機器。你可以嘗試欺騙它,就像你在上面引用的鏈接一樣,但爲什麼要麻煩?

這是IIS Express託管應用程序的結果。

enter image description here

這是本地IIS的結果託管應用程序

enter image description here

抵達該處項目結果後:

enter image description here

+0

好了,我現在已經安裝了IIS,並且web項目的屬性/網頁現在允許我選擇「本地IIS」作爲服務器(它以前沒有可用 - 不能認爲VS2015爲什麼不啓用IIS默認情況下,如果它非常重要)。我在IIS中創建了一個網站,如果我在IIS管理器中瀏覽它,我可以訪問該網站。但是現在當我嘗試在VS2015中運行服務時,我只是得到了404錯誤。在IIS中有很多東西需要學習。例如我不確定要在Web屬性頁面上輸入'project Url'(目前我有http:// localhost/quilkin,其中quilkin是新IIS站點的名稱) – quilkin

+0

首先讓我們爲你解決VS。你需要做的是打開VS2015命令提示符並運行「aspnet_regiis.exe -i」現在你應該可以從VS中選擇本地IIS了,試試這個,讓我知道你會得到什麼,我想你沒有指定正確的地址你的服務,它應該包括你的應用程序名稱,當你從VS. –

+0

運行它時你應該得到它,我創建它爲web api,你看起來像svc服務,它是WCF嗎?如果你可以共享你的web服務示例項目,我可以運行它,並告訴你在Xamarin客戶端上應該做什麼 –

相關問題