这是我创建的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,结果相同。
要清楚,这不是一个路由问题,因为我能够以任何方式点击并逐步执行代码,并且所涉及的网址不是此应用程序的一部分。
答案 0 :(得分:0)
我明白了。我最初被抛弃了,因为它似乎在常规控制器中工作,但不在ApiController中工作。在我未能重现我之前的“成功”之后,我终于发现我需要使用系统代理。
webClient.Proxy = WebRequest.GetSystemWebProxy();