配置 MVC 应用程序 运行 下的 Windows 用户

Configuring Windows user that an MVC application run under

我正在编写一个 MVC 应用程序,它需要从 ARIN.net 请求 ip 地址的所有者名称。这是我为此编写的程序代码片段:

                                .
                                .
                                .

string requestUrl = "http://whois.arin.net/rest/ip/17.151.229.4";
WebResponse response = null;
WebRequest request = WebRequest.Create(requestUrl);
request.Proxy.Credentials = CredentialCache.DefaultCredentials;
response = request.GetResponse();
StreamReader sr = new StreamReader(response.GetResponseStream());
XElement responseElmn = XElement.Parse(sr.ReadToEnd());
                                .
                                .
                                .

这段代码能够成功地向 http://whois.arin.net/rest/ip/17.151.229.4 发送请求,并在 运行 从我机器上的控制台应用程序接收到适当的响应。但是,当我尝试将这段代码放入我的 MVC 应用程序时,我收到一个异常

A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond .

我的本地计算机,其中这些应用程序 运行,位于一个非常大的公司的网络内,因此此代码段必须通过代理将其请求发送到 ARIN服务器在前面提到的应用程序 运行 时。我相信,由于控制台应用程序 运行ning 在与 MVC 应用程序不同的用户下,我可能会收到这种结果差异。我在 Visual Studio 2013 年 运行 将两个应用程序都设置为调试模式。当 MVC 应用程序处于 运行 调试模式时,它由 IIS Express 托管。

我的问题是:

  1. 如何找出控制台应用程序和 MVC 应用程序 运行 在哪个用户之下?

  2. 如何将 IIS Express 配置为 运行 不同用户下的 MVC 应用程序?

我一直无法在我的研究中找到问题的答案,感谢任何帮助。

我发现了问题的原因。默认情况下,MVC 应用程序没有分配给 WebRequest 实例的代理对象成员的代理服务器,而控制台应用程序中的代理服务器有。

因此,在尝试检索响应之前,我必须将代理服务器分配给代码中 WebRequest 实例的代理对象实例:

string requestUrl = "http://whois.arin.net/rest/ip/17.151.229.4";
WebResponse response = null;
WebRequest request = WebRequest.Create(requestUrl);


Uri newUri = new Uri("http://proxy.bigcorp.com:8080");
WebProxy myProxy = new WebProxy(newUri);
request.Proxy = myProxy;


request.Proxy.Credentials = CredentialCache.DefaultCredentials;
response = request.GetResponse();
StreamReader sr = new StreamReader(response.GetResponseStream());
XElement responseElmn = XElement.Parse(sr.ReadToEnd());

感谢 Brendan Green 的帮助!