2012-02-22 61 views
1

我建立了一個ASP.NET Web服務應用程序(.NET 3.5)用一個簡單的WebMethod:的WebMethod:關閉XML

[WebMethod] 
    public string GetToken() 
    { 
     return "Hello"; 
    } 

的迴應是這樣的:

<?xml version="1.0" encoding="utf-8" ?> 
    <string xmlns="http://www.mywebsite.com/">Hello</string> 

這工作正常。但是,我的一位客戶無法處理結果字符串周圍的XML-Wrapper。有沒有辦法關閉XML,只是返回純字符串「你好」(當然沒有引號;-))。

+0

在哪條路,爲gettoken()方法被調用?從JavaScript或其他方式? – 2012-02-22 09:17:02

+0

Afaik,我的客戶使用PHP並通過GET調用我的webmethod,例如http://www.mywebsite.com/WebServiceApp.asmx/GetToken – Ingmar 2012-02-22 09:24:30

+0

但是,僅僅是明確的:我在尋找改變我身邊的解決方案......不能問我的客戶改變了他的代碼。我只是希望有一個小技巧來關閉我的XML(web.config設置或其他)。 – Ingmar 2012-02-22 09:27:58

回答

0

在這裏看到:http://weblogs.asp.net/scottgu/archive/2007/04/04/json-hijacking-and-how-asp-net-ajax-1-0-mitigates-these-attacks.aspx

基本上得到字符串返回你不得不返回JSON結果,反過來,可以通過發出從PHP客戶端發佈,或將

大功告成
[ScriptMethod(UseHttpGet=true)]  

到您的Web方法。

此外,請確保您遵循這裏列出的步驟:http://www.asp.net/web-forms/tutorials/aspnet-ajax/understanding-asp-net-ajax-web-services 首先創建支持AJAX的服務。例如,你需要

[System.Web.Script.Services.ScriptService] 

屬性添加到您的類,允許它表現得像一個AJAX服務...

+0

你好德米特里,非常感謝你的建議。但是我仍然無法獲得XML免費回覆。 我加入[System.Web.Script.Services.ScriptService]上我的web服務類(這是類型System.Web.Services.WebService的)的頂部,並且我加入[ScriptMethod(UseHttpGet =真,ResponseFormat = ResponseFormat.Json) ]在我的網絡方法之上。 打電話給我用http://www.mywebsite.com/WebServiceApp.asmx/GetToken web服務仍返回原來的響應(包括XML)。 :-(我是否缺少什麼? – Ingmar 2012-02-22 10:11:19

+0

Ingmar,你還應該檢查你的web.config處理程序: <刪除動詞=「*」path =「*。asmx」/> 2012-02-23 04:06:47

+0

梅德你好,其實,我已經這樣做,但我還是檢索XML,但也許我只是誤解的我在做什麼,結果爲了模擬一個GET請求,我只是輸入http。: //localhost:50733/WebServiceApp.asmx/GetToken在我的瀏覽器的地址欄中。這不是一個GET請求嗎?非常感謝y我們的幫助! – Ingmar 2012-02-23 09:35:17