一部のコンテンツ(一部のプレーンテキストデータ)を非同期で取得し、操作の前/最中/後に何かを書き込む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を呼び出すと、問題なく機能します。いくつかのより焦点を絞った検索が私に解決策をもたらしました。