2012-08-28 60 views
0

我在我的wcf rest服務中遇到了一個問題,返回一個json響應。在我的本地IIS Webserver上運行Visual Studio 2010中的服務完美運行。未知的文件類型爲wcf休息服務json響應在iis 7.5

但現在I'm運行在Windows Server上的同一web.config中的相同服務2008 R2與IIS 7.5,當I'm通過

調用服務* HTTP://本地主機/ EchoService的/ EchoService的.svc/echo/123

它不返回json結果,而是下載帶有json結果的未知文件類型的對話框。

首先,我認爲問題是,Web服務器不知道JSON的MIME類型,所以我添加了它:

擴展:以.json

MIME-類型:應用/ JSON

條目類型:本地

但didn't解決問題。你能告訴我爲什麼它將結果作爲文件返回並且不知道文件類型嗎?

Here's我的web.config:

<?xml version="1.0" encoding="UTF-8"?> 
    <configuration> 
     <system.serviceModel> 
     <services> 
      <service name="wcf_iis_proto_1.EchoService"> 
       <endpoint address="" binding="webHttpBinding" contract="wcf_iis_proto_1.IEchoService" behaviorConfiguration="webEcho" /> 
      </service> 
     </services> 
     <behaviors> 
      <endpointBehaviors> 
       <behavior name="webEcho"> 
        <webHttp /> 
       </behavior> 
      </endpointBehaviors> 
     </behaviors> 
    </system.serviceModel> 
</configuration> 

這裏是我的服務合同(使用和命名空間離開了):

public interface IEchoService 
{ 
    [OperationContract] 
    [WebGet(UriTemplate = "/echo/{message}", ResponseFormat = WebMessageFormat.Json)] 
    string EchoMessage(string message); 
} 

和服務實現:

public class EchoService: IEchoService 
{ 
    public string EchoMessage(string message) 
    { 
     return "Hey Buddy. You said: " + message + "!"; 
    } 
} 

我希望你能幫助我。謝謝!!!

回答

0

可能是您的瀏覽器中預期的行爲。它認爲Json是一種可下載的類型。爲了避免這種情況,您應該更改內容類型以響應「text/plain」。 Here被討論如何做到這一點。

+0

我通過fiddler訪問了服務,它按照我的意願得到了預期的json結果。我仍然想知道爲什麼它在我的本地IIS上託管時在瀏覽器中工作,但它並不重要,因爲我想通過應用程序訪問數據。 謝謝! Philipp –

+0

順便說一句。 Firefox正確顯示結果。必須與Http Accept Header有關。 –