3

私は、タイトルの単一の文字列プロパティを持つホーム リソースを持つ非常に単純な OpenRasta アプリを持っています (OpenRasta コミュニティ ドキュメントの例から直接)。

次のように、リソースに対して XML と JSON の両方のデータ コントラクトを設定しました。

ResourceSpace.Has.ResourcesOfType<Home>()
    .AtUri("/home")
    .HandledBy<HomeHandler>()
    .AsXmlDataContract()
    .And.AsJsonDataContract();

jQuery から、JSON データを問題なく取得できます。しかし、jQuery XML Ajax リクエストを行うと、JSON データが返されます。

私のjQueryコードは次のようになります。

$.ajax(
{
    url: "/home",
    dataType: "xml",
    success: function(result) {
        $('#xmlSpan').append($(result).find('Title').text());
    },
    error: function(request, status, ex) {
        $('#xmlSpan').append('error: ');
        $('#xmlSpan').append(status + ', ');
        $('#xmlSpan').append(ex.toString());
    }
});

追加されるエラー情報は、次のようになります。

エラー: パーサーエラー、TypeError: a が null です

しかし、ここに興味深い部分があります。Fiddler からのリクエストは次のようになります。

GET http://127.0.0.1:51041/home HTTP/1.1
Host: 127.0.0.1:51041
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.8) Gecko/20100202 Firefox/3.5.8
Accept: application/xml, text/xml, */*
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
X-Requested-With: XMLHttpRequest
Referer: http://ipv4.fiddler:51041/WebForm1.aspx
Cache-Control: max-age=0

...そして、私の応答は次のようになります。

HTTP/1.1 200 OK
Server: ASP.NET Development Server/9.0.0.0
Date: Thu, 04 Mar 2010 18:30:04 GMT
X-AspNet-Version: 2.0.50727
Content-Length: 18
Cache-Control: private
Content-Type: application/json; q=0.5
Connection: Close

{"Title":"Foooo!"}

リクエストは「Accept: application/xml」として受信されますが、応答は「application/json」です (返されるデータは明らかに json です)。

私は何を間違っていますか?

4

1 に答える 1

4

マイク、

(以前にその質問を見たことがなくてすみません)

あなたは何も悪いことをしていません。これは問題なく動作するはずです。

Accept: ヘッダーは、クライアントが application/xml またはその他のもの ( / ) を喜んで受け取ることを指定します。おそらく、OpenRasta は「その他の機能」が機能し、json コーデックに対応していると想定している可能性があります。

ヘッダーを次のように変更した場合

受け入れる: アプリケーション/ xml、テキスト/xml;q=0.9、/;q=0.8

そうすれば元気になるはずです。または、 / alltogether/を削除するだけです

とはいえ、openrasta のコンテンツ ネゴシエーション アルゴリズムでは、常に/が最後の手段として置かれているため、この結果は非常に驚くべきものです。OR のどのバージョンを使用していますか?

于 2010-03-25T14:46:18.477 に答える