0

这是我创建的 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 的结果相同。

需要明确的是,这不是路由问题,因为我可以通过任何一种方式点击并单步执行代码,并且所涉及的 url 不是此应用程序的一部分。

4

1 回答 1

0

我想到了。我最初被甩掉了,因为它似乎可以在常规控制器中工作,但不能在 ApiController 中工作。在我未能重现我之前的“成功”之后,我终于弄清楚我需要使用系统代理。

webClient.Proxy = WebRequest.GetSystemWebProxy();
于 2014-05-14T11:53:06.490 回答