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

时间:2015-10-12 22:31:52

标签: asp.net-mvc asp.net-mvc-4 iis iis-express

我正在编写一个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应用程序中时,我得到了一个异常陈述

  

连接尝试失败,因为连接方没有   在一段时间后正确回应,或建立连接   失败,因为连接的主机无法响应。

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

我的问题是:

  1. 如何找出运行控制台应用程序和MVC应用程序的用户?

  2. 如何配置IIS Express以在其他用户下运行MVC应用程序?

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

1 个答案:

答案 0 :(得分:0)

我发现了问题的原因。默认情况下,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的帮助!