1

更新: Ramone プロジェクトをダウンロードして自分のプロジェクトに追加し、デバッガーでアプリケーションを再度実行しました。エラーを以下に示します。

public MediaTypeWriterRegistration GetWriter(Type t, MediaType mediaType) { ...

CodecEntry エントリ = SelectWriters(t, mediaType).FirstOrDefault(); =>この行はエラーをスローします

... } CodecManager.cs でエラーが発生します。json-patch メディア タイプを認識しない理由を理解しようとしています。ライターが正しく登録されていない可能性がありますか?私はそれを調べています。問題がわかったら、教えてください。あなたはライブラリの作成者であるため、問題を簡単に把握できます。問題を見つけるには、すべてのコード ファイルとメソッドを確認する必要があります。ありがとう!

Ramone ライブラリが json-patch 操作をサポートしていることを知って興奮しましたが、試してみると、次のエラーが発生しました。

415- サポートされていないメディア タイプ

これは、RestSharp を使用したときに発生するエラーと同じです。RestSharp は json-patch とエラーをサポートしていないのではないかと考えたので、Ramone lib を試すことにしましたが、それでも同じエラーが発生します。Postman を使用して同じコマンドを実行すると機能しますが、C# でプログラムを使用して実行すると、サポートされていないメディア タイプ エラーがスローされるため、エンドポイントに問題はありません。これが私のコードです:

var authenticator = new TokenProvider("gfdsfdsfdsafdsafsadfsdrj5o97jgvegh", "sadfdsafdsafdsfgfdhgfhehrerhgJ");

JsonPatchDocument patch = new JsonPatchDocument<MetaData>();
patch.Add("/Resident2", "Boyle");
//patch.Replace("/Resident", "Boyle");

RSession = RamoneConfiguration.NewSession(new Uri("https://api.box.com"));
RSession.DefaultRequestMediaType = MediaType.ApplicationJson;
RSession.DefaultResponseMediaType = MediaType.ApplicationJson;

Ramone.Request ramonerequest = RSession.Bind("/2.0/files/323433290812/metadata");

ramonerequest.Header("Authorization", "Bearer " + authenticator.GetAccessToken(code).AccessToken);
//var ramoneresponse = ramonerequest.Patch(patch); //results in error: 405 - Method Not Allowed
var ramoneresponse = ramonerequest.Put(patch); //results in error: 415 - Unsupported Media Type

var responsebody = ramoneresponse.Body

エンドポイント情報は、http: //developers.box.com/metadata-apiで入手できます。

次の記事の json-patch セクションを参考にしました。

http://elfisk.dk/Ramone/Documentation/Ramone.pdf

ちなみに、Patch() メソッドを試してみましたが (上記の参照記事に示されているように)、「メソッドは許可されていません」という結果になったので、動作しているように見える Put() メソッドを使用しましたが、json-patch 操作のためにエラーが発生しました。

この問題を解決するためのヘルプ、ガイダンス、ヒントは高く評価されます。よろしくお願いします。

-シャム

4

1 に答える 1

0

Box のドキュメントには、PUT を使用する必要があると書かれています (これはかなりおかしいです)。サーバーは、HTTP PATCH メソッド (405 メソッドが許可されていません) をサポートしていないことさえ通知します。つまり、PUT である必要があります。

ここで、Ramone に常に JSON を使用するように指示すると (RSession.DefaultRequestMediaType = MediaType.ApplicationJson)、JSON ドキュメントを Box に PUT することになります。ここで、JSON-Patch ドキュメントを PUT する必要があります。

「RSession.DefaultRequestMediaType = MediaType.ApplicationJson」ステートメントを削除し、次を使用してパッチ ドキュメントを JSON-Patch として送信します: ramonerequest.ContentType("application/json-patch+json").Put(...)。

于 2014-01-28T00:29:03.547 に答える