从ApiController中发出http请求并不起作用

时间:2014-05-14 11:34:05

标签: asp.net-mvc httpwebrequest webclient webrequest asp.net-apicontroller

这是我创建的API控制器的简化版本。

public class SampleController : ApiController  
{
    [System.Web.Http.HttpGet]
    public string Test(string url)
    {
        try
        {
            using (WebClient webClient = new WebClientEx())
            {
                return webClient.DownloadString(url);
            }
        }
        catch (Exception ex)
        {
            return string.Empty;
        }
    }

给定一个完全有效的url,这将抛出一个WebException,表示"远程名称无法解析"。

如果我在LinqPad中执行相同的方法,使用相同的URL,它可以工作。我尝试过WebClient和WebRequest,结果相同。

要清楚,这不是一个路由问题,因为我能够以任何方式点击并逐步执行代码,并且所涉及的网址不是此应用程序的一部分。

1 个答案:

答案 0 :(得分:0)

我明白了。我最初被抛弃了,因为它似乎在常规控制器中工作,但不在ApiController中工作。在我未能重现我之前的“成功”之后,我终于发现我需要使用系统代理。

webClient.Proxy = WebRequest.GetSystemWebProxy();