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
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.
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
Vous devez utiliser un middleware. Avez-vous regardé celui-ci:
https://github.com/aspnet/Proxy
il y a un dossier "échantillons": https://github.com/aspnet/Proxy/tree/dev/samples/Microsoft.AspNetCore.Proxy.Samples
Autres ressources sur le sujet: 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
Un middleware fonctionne-t-il pour vous?