2017-10-04 3 views
2

ここで何か愚かなことをしているかのように見えると私は実感してください。私は私の問題への答えのために他のスタックオーバーフローの質問をブラウズしようとしましたが、どこにもいないようです。C#HttpWebRequestの応答エラー(401)

私は、dotnetコアのMVCアプリケーションで、リモートサーバーからデータを返すために取り組んでいます。私はHttpWebRequestクラスを使用しています。

フィドラーで私は作曲家を使って次のことを実行しました。

enter image description here

あなたは、ヘッダーに渡された2枚のクッキーとのシンプルなGETリクエストを見ることができるように。

これはうまく動作し、私に必要なものを正確に返します。次のように私はその後、DOTNETの世界で私の要求を構成

HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); 

request.CookieContainer = new CookieContainer(); 

request.CookieContainer.Add(new Cookie("name", "value", "/", "localhost")); 

(質問の目的のために第二のクッキーを含んでいませんでした)

私はその後、呼び出し:

var httpResponse = (HttpWebResponse)request.GetResponse(); 

しかし、受信 'リモートサーバーはエラーを返しました:(401)無許可'

任意私がここで間違っているアイデア?私はテスト目的のために次の行のコードを追加しようとしましたが、まだ運がありません。

request.ServerCertificateValidationCallback = delegate { return true; }; 

すべての回答が高く評価されます。私が言及したようにプラス、私は専門家ではないので、私はちょうど何かをやっていることができます!

ジェームズ

+2

C#コードから生成された要求を調べるために、フィドラーを使用できますか?あなたがフィドラーで生産した作業要求とどのように違うのですか? – Alfredo

+2

あなたのリクエストURLはlocalhostに行きますか? localhostドメインにのみ配信されるようにCookieを設定しました。 –

+0

あなたのコメントのためにこんにちは@Ed Tありがとうございます。私はあなたが言ったことをして、これを正しいドメインに変更して...ビンゴ!出来た。その1つを見つけたはずです!これを答えに変えれば、私は投票し、これを答えにします。 James –

答えて

1

を、あなたはそれが唯一のローカルホストのドメインへの要求に配信されることを意味は「localhost」とクッキーのドメインを設定している:追加

してみてください。実際にリクエストを送信しているドメインに設定する必要があります。

2

私はあなたの要求がPOSTをデフォルトされていますが、あなたのフィドラーの例では、GETをやっていると思います。 Cookieコンストラクタで

  request.Method = "GET"; 
      request.ContentType = "text/xml; encoding='utf-8'"; 
+2

こんにちは@ Scrappydog私はまたこれを試してみましたが、違いはありませんでした。リクエストはまだGETとして処理されました。私はこれを明示的にすることに害はないと思うので、私は投票します。 –

関連する問題