web-dev-qa-db-ja.com

asp.net core defaultProxy

Net 4.5では、次のようなプロキシを使用しています。

<system.net>
    <!-- -->
    <defaultProxy enabled="true" useDefaultCredentials="false">
        <proxy usesystemdefault="True" proxyaddress="http://192.168.1.1:8888" bypassonlocal="True" autoDetect="False" />
        <module type="CommonLibrary.Proxy.MyProxy, CommonLibrary, Version=1.0.0.0, Culture=neutral" />
    </defaultProxy>

    <settings>
        <httpWebRequest useUnsafeHeaderParsing="true" />
        <servicePointManager expect100Continue="false" />
    </settings>
</system.net>

しかし、asp.netのコアまたはテストでは、上記のようなソリューションは見つかりませんでした。誰か助けてください。

本当にありがとうございます

ありがとうございます。それでは、お元気で

12
Marcelo Oliveto

HttpClientHanderを使用できる場合はプロキシを手動で設定できますが、.NET Frameworkでできるように、コードなしですべてのリクエストをデフォルトに設定することはできません。この機能を公開していないライブラリを使用している場合、これは残念です。

ありがたいことに、.NET Core 3.0から、これは環境変数を設定するだけで可能になります(つまり、Linuxが永遠に機能していたように動作します): https://github.com/dotnet/corefx/issues/37187

または、 https://github.com/dotnet/corefx/issues/3655DefaultWebProxyに新しい静的HttpClientプロパティを追加して、同じことを実現できるようにしましたコードを介して。これはCore 3.0でも利用可能になります。

6
Adrian

.netコアでHTTPプロキシを使用するには、IWebProxyインターフェイスを実装する必要があります。これはSystem.Net.Primitives.dllアセンブリからのものです。まだない場合は、project.jsonに追加できます

例えば.

"frameworks": {
    "dotnet4.5": {
      "dependencies": {
        "System.Net.Primitives": "4.3.0"
      }
    }
}

実装は非常に簡単です

public class MyHttpProxy : IWebProxy
    {

        public MyHttpProxy()
        {
           //here you can load it from your custom config settings 
            this.ProxyUri = new Uri(proxyUri);
        }

        public Uri ProxyUri { get; set; }

        public ICredentials Credentials { get; set; }

        public Uri GetProxy(Uri destination)
        {
            return this.ProxyUri;
        }

        public bool IsBypassed(Uri Host)
        {
            //you can proxy all requests or implement bypass urls based on config settings
            return false; 

        }
    }


var config = new HttpClientHandler
{
    UseProxy = true,
    Proxy = new MyHttpProxy()
};

//then you can simply pass the config to HttpClient
var http = new HttpClient(config)

チェックアウト https://msdn.Microsoft.com/en-us/library/system.net.iwebproxy(v = vs.100).aspx

5
Rohith

ミドルウェアを使用する必要があります。これを見ましたか:

https://github.com/aspnet/Proxy

「samples」フォルダーがあります: https://github.com/aspnet/Proxy/tree/dev/samples/Microsoft.AspNetCore.Proxy.Samples

トピックに関するその他のリソース: http://josephwoodward.co.uk/2016/07/proxying-http-requests-asp-net-core-using-kestrel

http://overengineer.net/creating-a-simple-proxy-server-middleware-in-asp-net-core

ミドルウェアは機能しますか?

3
Petar Ivanov