0

一部のコンテンツ(一部のプレーンテキストデータ)を非同期で取得し、操作の前/最中/後に何かを書き込むASPXページがあります。

現在、「中」のステップに到達できますが、その後ページのコンテンツは変更されません。

大きな問題は、インフラストラクチャ(誤った)構成とリモートデバッグツールの実行が許可されていないため、どのような種類のデバッグも実行できないことです。公開に依存して、何が起こるかを確認する必要があります...

背後にあるコードは次のようになります(これは、VS2008で作成されて後でVS2010にアップグレードされた.NET 3.5(ターゲットフレームワークの変更はオプションではありません)プロジェクトです)

void Page_Load()
{
    myLabel = "Preparing to fetch content ...";
    FetchContent();
}

void FetchContent()
{
    try {
        // "http://myUrl" returns text with header 'Content-disposition: inline;'
        // If called directly, Text can be seen in the browser alright.
        WebRequest request = WebRequest.Create("http://myUrl");
        myLabel = "Fetching ...";
        request.BeginGetResponse(new AsyncCallback((result)=>
        {
            //EXCEPTION HERE: 401 Unauthorized ??? url works via browser!
            WebResponse resp = request.EndGetResponse(result);

            StreamReader stream = new StreamReader(resp.GetResponseStream());
            myLabel = "Done";
        }        
    } catch {myLabel = "Request KO"; }
}

ASPXコードでmyLabelは、次のように簡単に示されています。

<body>
    <pre><%=myLabel %></pre>
</body>

ブラウザから呼び出された場合、URLはかなり迅速に応答しますが、このコードでmyLabelは、コールバックが発生しないように、URLDone.Fetching...テキストに残ります。

ここで明らかな何かが欠けていますか?

アップデート

よく調べてみると、ステータスコードがEndGetResponse返されます。401 Unauthorizedただし、ブラウザを介してまったく同じURLを呼び出すと、問題なく機能します。いくつかのより焦点を絞った検索が私に解決策をもたらしました。

4

1 に答える 1

1

応答でステータスコードを見つけた後401 Unauthorized、私はSOで他の答えを見つけることができました。これにより、(結局のところ)これを追加するという些細な問題を解決することができました。

request.UseDefaultCredentials = true;
于 2012-06-08T09:56:09.553 に答える