连接到WebRequest的AsyncCallback永远不会到达
问题描述:
我有一个ASPX页面,它应该异步检索一些内容(一些纯文本数据),并在操作之前/期间/之后写入内容。连接到WebRequest的AsyncCallback永远不会到达
目前,我可以到达“正在执行”步骤,但页面内容不会在之后发生变化。
最大的问题是我不能执行任何一种调试由于基础设施(MIS)配置上并没有被允许运行远程调试工具,我都要靠出版,看看会发生什么...
后面的代码看起来是这样的(这是一个.NET 3.5(改变目标框架是不一个选项)项目在VS2008中创建,后来升级到VS2010)
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"; }
}
在AS PX代码,myLabel
简单示:
<body>
<pre><%=myLabel %></pre>
</body>
的网址很快,如果从浏览器调用响应,但在此代码myLabel
从未显示Done.
,它停留在Fetching...
文本,如回调从来没有发射。
我在这里错过了一些明显的东西吗?
UPDATE
仔细检查发现,EndGetResponse
返回401 Unauthorized
状态代码。它完美的工作,如果我通过浏览器调用完全相同的网址,但!现在有些人更关注搜索现在给我解决方案。
答
在响应中找出401 Unauthorized
状态代码后,我设法在这里的SO这让我解决我的(因为它原来)小事添加此找到其他答案:
request.UseDefaultCredentials = true;