【发布时间】:2012-02-06 19:16:12
【问题描述】:
我遇到了 HttpWebRequest 的一种行为,我认为这是有意的,但由于我无法找到任何明确表示这是正确的来源,我想我会把它作为一个问题发布,看看是否有人遇到过这种情况和/或可以验证这是正确的。
对于初学者,我有一个在 IIS 7.5 上运行的 MVC3 应用程序。它有 1 个控制器并支持 1 个 post 方法。我在 IIS 中启用了 Windows Auth 和 ASP.NET Impersonation。 MVC3 应用程序背后的想法只是提供一个简单的服务,可用于记录来自各种客户端应用程序(控制台应用程序、silverlight、asp.net、AJAX 等)的信息。该服务所做的一件事是使用来自控制器的 User 属性来记录向该服务发布数据的人。
为了简化消费应用程序的处理,我创建了一些客户端库、Silverlight、DotNet 和一个 js 库。
除了在另一个 MVC3 应用程序中使用 DotNet 库外,这一切都按预期进行。对于 DotNet 库,我使用 HttpWebRequest 并使用异步方法 (Begin/EndGetRequestStream)/(Begin/EndGetResponse) 发布请求。我还将请求上的 .Credentials 设置为 CredentialCache.DefaultCredentials,但是当日志记录应用程序开始处理来自另一个 MVC3 应用程序的请求时,它会将用户显示为从中收到帖子的应用程序池的服务帐户。
当我发现这一点时,我将帖子的同步版本添加到 DotNet 库中,发现日志记录服务正在使用我的个人凭据。
我假设 HttpWebRequest 可能使用不同的 DefaultCredentials,具体取决于使用它的上下文。由于这是 asp.net 并且正在调用请求的异步方法,因此在客户端 MVC3 应用返回响应之前,我的库代码可能还没有完成。
我无法找到是否确实如此。如果有人有答案或文章可以为我指明正确的方向,我将不胜感激。
提前致谢
【问题讨论】:
-
这可能看起来很奇怪,但是您使用的是什么网络浏览器?
-
我使用的是 IE 8。我已经解决了问题。
标签: asp.net-mvc-3 asynchronous httpwebrequest