2010-09-29 39 views
0

我有一種簡單的WCF Rest服務。接口被定義爲:當我調用REST方法時,它會詢問我是否要下載文件

[ServiceContract] 
public interface IHelloRest 
{ 
    [OperationContract] 
    [WebGet(UriTemplate = "json/hello/{name}", ResponseFormat = WebMessageFormat.Json)] 
    string Hello(string name); 
} 

實現被定義爲:

public string Hello(string name) 
{ 
    return string.Format("Hello {0}. You called my Hello method", name); 
} 

我部署此服務IIS 7的Windows Server 2008上運行,這裏是我沒有添加服務的步驟:

  • 我開始IIS管理器
  • 我右鍵點擊網站,並選擇添加網站...
  • 我把「測試」的站點名稱
  • 應用程序池,我選擇ASP.NE V4.0
  • 對於物理路徑,我把我的服務的根文件夾。
  • 綁定,我把HTTP,我離開了IP地址未分配,我離開港口的80
  • 我沒有給一個主機名
  • 我離開開始網站立即檢查。
  • 我點擊確定,然後瀏覽到我的網站。

做上述步驟後,還有我遇到的幾個問題:

當我瀏覽到http://localhost/HelloRestService.svc/json/hello/xaisoft,它問我,如果我要下載的文件。如果我下載並打開它,它包含json格式的響應。在我的本地機器上,當我在IIS中託管它時,它運行良好,但在此遠程機器上,它只詢問我是否要下載該文件。

另一個問題是,我不希望主機是本地主機,我想要的東西像demo.rest.com,所以我會瀏覽到http://demo.rest.com/json/hello/xaisoft,但如果我將主機更改爲demo.rest.com和嘗試瀏覽現在的服務,它試圖去:

http://demo.rest.com/HelloRestService.svc,但表示Internet Explorer無法顯示該網頁。

+0

當你看着小提琴手的反應時,你會發現什麼不同?特別是,狀態碼,內容類型,內容處置標題和內容本身有什麼不同? – 2010-09-30 02:28:12

回答

4

這是正常的,默認的預期行爲 - IIS和IE不知道如何處理JSON結果,所以最好的選擇是提供下載文件以便存儲和查看它。

JSON並非設計用於直接在瀏覽器中調用 - 如果您想直接通過瀏覽來顯示內容,請使用XML。作爲一個小有效載荷(例如,「下載」爲一大塊數據),然後通過Javascript解釋並轉換成HTML標記(通常),JSON被設計爲發回您的客戶端應用程序(Web應用程序或其他)。

所以我不認爲這裏有什麼問題 - 如果有什麼奇怪的話,那就是在你的本地系統上,它的工作「很好」(甚至真的意味着什麼?)會發生什麼?

+0

我的意思是「很好」,就是在安裝在本地機器上的IIS上,當我執行一個http調用,它以JSON的形式返回響應時,它實際上在瀏覽器中顯示JSON,但如果我遠程訪問另一臺機器(Windows Server 2008),並在IIS上託管服務器並瀏覽到相同的http url,這是它要求我下載文件的地方。 – Xaisoft 2010-09-30 14:30:18

+0

@ Xaisoft:好的,但這是「異常」 - 正常的行爲是看到提示下載生成的.JSON文件。 – 2010-09-30 16:14:27

相關問題