2011-02-09 11 views
6

こんにちは私はWCF Rest 4.0プロジェクトを持っています。何らかの理由で私はJsonを返すwebserviceを持っていますが、もし私がxmlを取得するアドレスを入力すると、私はフィドラー以上のエンドポイントに到達しますが、firefoxやchromeを通るとします。どうしたの???WCF ResponseFormat JSONはChrome/FirefoxのFiddler、XmlのJsonを返します!

ありがとうございました!ここにコードがあります。問題の

Webサービス:

[OperationContract] 
    [WebGet(UriTemplate = "",     
      ResponseFormat = WebMessageFormat.Json, 
      RequestFormat = WebMessageFormat.Json)] 

     public SomeObject [] GetObjects() 
     { 
       ..... 

オブジェクトコード:

[DataContract] 
public class SomeObject 
{  
     [DataMember] 
     public string Date { get; private set; } 

     .... 
      public String Site { get; private set; } 
+0

あなたのリクエストヘッダを確認してください。特に「受け入れる」。 – Foole

+0

アドレスバーに入力するアドレスは? –

+0

ウェブサービスを提供しています。 –

答えて

1

あなたは.NET 4.0フレームワークを使用している場合、これが解決策です:http://karnicki.eu/2011/02/rest-wcf-net-4-0-service-with-json-jsonp-for-jquery/

WCFは、今必要な小さな構成で、箱から出してJSONPをサポートしています。

基本的に、2つの設定ファイルエントリauthenticationModeとStandardEndpointを編集/追加するだけで、任意のブラウザでWCFサービスからのjson応答を表示できます。

EDIT:元のリンクがダウンしている - これは役立つかもしれない:http://blog.shutupandcode.net/?p=696

+0

その投稿が存在する他の場所はありますか?同じ問題を抱え、リンクが私には死んでいる。 –

+0

nj、これはあなたを助けるかもしれないhttp://blog.shutupandcode.net/?p=696 – fjxx

2

これをコメントとして掲載しましたが、ここで詳しく説明します。

お使いのブラウザは、ほとんどの場合、このヘッダを送信している:それはJSONを言及したが、XMLを言及していないこと

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 

注意を。

あなたのWCFクライアントは、おそらくjsonを優先する別の「Accept」ヘッダーを使用している可能性があります。これをFiddlerでチェックすることができます。

+0

このヘッダーを使用すると、IISは自動的に応答形式を選択できます。私の答え 'automaticFormatSelectionEnabled =" false "'を見て、サービスが独自のフォーマットを決めるようにしてください。 – enguerran

0

私は同じ問題を抱えていました。 I used a WCF configuration with no svc

私は真のweb.configファイルでこのブール値を変更しなければならなかった:falseに

<standardEndpoint name="" helpEnabled="true" automaticFormatSelectionEnabled="true"/> 

<standardEndpoint name="" helpEnabled="true" automaticFormatSelectionEnabled="false"/> 
関連する問題