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 がスローされます。

同じ URL を使用して LinqPad 内で同じメソッドを実行すると、機能します。同じ結果で WebClient と WebRequest を試しました。

明確にするために、これはルーティングの問題ではありません。どちらの方法でもコードをヒットしてステップスルーでき、関連する URL はこのアプリケーションの一部ではないからです。

4

1 に答える 1

0

私はそれを考え出した。通常のコントローラーでは機能するように見えたが、ApiController では機能しないように見えたので、最初は気が進まなかった。以前の「成功」を再現できなかった後、システム プロキシを使用する必要があることがわかりました。

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