在我的公司,开发人员的机器位于代理后面。我有一个场景,我需要提供我的凭据,并且我通过 HttpClient.DefaultProxy 来完成它。但是,在临时服务器和生产服务器上没有代理。我想做的是确定应用程序是否针对本地主机运行,并且仅在该情况下设置默认代理。过去我查看过 HttpRequest 来确定该信息。为此,我需要应用启动文件中的逻辑。
到目前为止,我想出的唯一比较干净的解决方案是检查附加的调试器。但这并不理想,因为我们还在本地运行这些应用程序而没有附加调试器。另一种选择是使用中间件,然后检查“localhost”的 url,但这似乎过多。
任何想法,将不胜感激!
public void ConfigureServices(IServiceCollection services)
{
if (/*Some clean way to determine IsLocal*/)
{
//Need to provide proxy credentials for local development only
var proxyCredentials = new NetworkCredential(Configuration["ProxyCredentials:Username"], Configuration["ProxyCredentials:Password"]);
HttpClient.DefaultProxy = new WebProxy("http://proxy.company.com:80", false, null, proxyCredentials);
}
}
Run Code Online (Sandbox Code Playgroud)
为了澄清以防止问题删除 - 我想确定 httprequest 之前的 localhost 是否存在。
更新我选择使用 lauchSetting.json ,它也并不完美,但最适合我的情况。我将概述所有选项及其优缺点,供未来处于同一位置的开发人员使用。
选项 1:添加本地环境
问题:如果您已经有了特定于环境的配置,如果您想从“本地”配置文件中定位“暂存”,则需要花时间复制粘贴配置。
代码
public void ConfigureServices(IServiceCollection services)
{
if (HostingEnvironment.IsEnvironment("Local"))
{
//Need to provide proxy credentials for local development only
var …Run Code Online (Sandbox Code Playgroud)