web-dev-qa-db-fra.com

asp.net core defaultProxy

Dans le net 4.5, nous travaillons avec un proxy comme ceci:

<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>

mais dans le noyau ou le test asp.net, nous ne pouvons pas trouver une solution comme celle-ci. Quelqu'un pourrait-il m'aider?

J'apprécie vraiment votre aide

Merci, Cordialement

12
Marcelo Oliveto

Bien que la définition manuelle du proxy fonctionne lorsqu'il est possible d'utiliser un HttpClientHander, la valeur par défaut de toutes les demandes de le faire sans code, comme vous pourriez le faire dans le .NET Framework, n'est actuellement pas possible. Ce qui est dommage si vous utilisez une bibliothèque qui n'expose pas cette fonctionnalité.

Heureusement, à partir de .NET Core 3.0, cela sera possible simplement en définissant des variables d'environnement (c'est-à-dire se comporte exactement comme Linux a toujours fonctionné): https://github.com/dotnet/corefx/issues/37187

Alternativement, https://github.com/dotnet/corefx/issues/3655 a ajouté une nouvelle propriété statique DefaultWebProxy sur HttpClient qui vous permettra d'accomplir la même chose chose via le code. Ce sera également disponible dans Core 3.0.

6
Adrian

Pour utiliser un proxy HTTP dans le noyau .net, vous devez implémenter l'interface IWebProxy. Cela provient de System.Net.Primitives.dll Assemblée. Vous pouvez l'ajouter à project.json si ce n'est déjà fait

par exemple.

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

La mise en œuvre est très triviale

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)

checkout https://msdn.Microsoft.com/en-us/library/system.net.iwebproxy (v = vs.100) .aspx

5
Rohith
3
Petar Ivanov