0

私は奇妙な動作に遭遇しました。私が使用している RTC インスタンスではなく、私のコードに関連していると確信しています。

Web リクエストのセットアップと構成が完了しました。

var cookies = new CookieContainer();
var request = (HttpWebRequest)WebRequest.Create(getCreationFactoryUri);
var xmlString = getRDF.ToString();

request.CookieContainer = cookies;
request.Accept = "application/rdf+xml";
request.Method = "POST";    
request.ContentType = "application/rdf+xml";
request.Headers.Add("OSLC-Core-Version", "2.0");
request.Timeout = 40000;
request.KeepAlive = true;
byte[] bytes = Encoding.ASCII.GetBytes(xmlString);
request.ContentLength = bytes.Length;
Stream dataStream = request.GetRequestStream();
dataStream.Write(bytes, 0, bytes.Length);
dataStream.Close();

これは、RTC のフォーム認証を使用する RTC の例に基づいて作成された別のメソッドに渡されます。

OSLC v2 仕様では、作成ファクトリー URL を使用して投稿しています。Firefox で RESTClient を使用して呼び出しを設定したので、URL に問題がないことはわかっています。必要なヘッダー (Content-Type: application/rdf+xml、Accept: application/rdf+xml、OSLC-Core-Version: 2.0) を追加し、コードが渡そうとする生成された XML を使用しました。私の手動呼び出しは完全に機能し、チケットが作成されます。

私のログでは、RTC からの応答をキャプチャしました。これは、チケットが作成されたことを示す応答ではなく、チケットのリストです。イベント チケットの作成に使用している作成ファクトリ URL に対して GET を実行することで、この動作を再現できます。

したがって、作成ファクトリに POST を送信していることはわかっていますが (Web 要求メソッドが 100% 'POST' に設定されていることを確認するためにデバッグしました)、RTC は代わりにチケットのリストを返し、要求が処理された場所でしか結論付けることができません。 「GET」として。

テストとして、POST の代わりに PUT を使用するようにリクエストを変更しました。これは、作成ファクトリー URL での使用は許可されておらず、テストでは実際にエラーがスローされます。RTC が私のチケットを作成せず、代わりに私のリクエストを GET として処理し、チケットのリストを返す理由について、私は完全に腹を立てています。

誰にもアイデアはありますか?

ありがとう。

4

1 に答える 1