Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/271.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 仅在IIS服务器上本地运行时,将用户名和密码传递给经过身份验证的代理服务器。ASP核心2.0_C#_Asp.net Core_Asp.net Core 2.0_Http Proxy - Fatal编程技术网

C# 仅在IIS服务器上本地运行时,将用户名和密码传递给经过身份验证的代理服务器。ASP核心2.0

C# 仅在IIS服务器上本地运行时,将用户名和密码传递给经过身份验证的代理服务器。ASP核心2.0,c#,asp.net-core,asp.net-core-2.0,http-proxy,C#,Asp.net Core,Asp.net Core 2.0,Http Proxy,我正在开发一个应用程序,该应用程序将部署在内部网(代理服务器)之外,但我正在代理服务器后面开发该应用程序。代理服务器使用http进行身份验证,并需要用户名和密码。是否有一种方法可以仅在本地运行(调试)应用程序时使用我的系统代理凭据?该应用程序是ASP核心2.0应用程序。 这是我使用的一段代码片段:我只希望在部署应用程序时运行调试时使用httpClientHandler,我不需要它,因为它部署在代理服务器之外。我怎样才能做到这一点 await new HttpClient(ProxyConfig.

我正在开发一个应用程序,该应用程序将部署在内部网(代理服务器)之外,但我正在代理服务器后面开发该应用程序。代理服务器使用http进行身份验证,并需要用户名和密码。是否有一种方法可以仅在本地运行(调试)应用程序时使用我的系统代理凭据?该应用程序是ASP核心2.0应用程序。 这是我使用的一段代码片段:我只希望在部署应用程序时运行调试时使用httpClientHandler,我不需要它,因为它部署在代理服务器之外。我怎样才能做到这一点

await new HttpClient(ProxyConfig.httpClientHandler).SendAsync(request).ConfigureAwait(false);
public class ProxyConfig
{
    public static WebProxy proxy = new WebProxy
    {
        Address = new Uri($"http://***.***.***.com:8080"),
        BypassProxyOnLocal = false,
        UseDefaultCredentials = false,
        Credentials = new NetworkCredential(userName: "****", password: "****")
    };
    public static HttpClientHandler httpClientHandler = new HttpClientHandler()
    {
        Proxy = proxy,
    };
}

我建议在启动文件上注册HttpClient,并将其注入控制器或服务

检查环境(IHostingEnvironment),根据环境的不同,您可以使用代理处理程序或不使用代理处理程序注册HttpClient。当您在本地工作时,应该是开发阶段,您可以使用代理注册HttpClient。否则,您将在不使用代理设置的情况下使用HttpClient实例

下面是注册HttpClient的示例代码:

public class Startup
{
    private readonly IHostingEnvironment hostingEnvironment;

    public Startup(IHostingEnvironment hostingEnvironment)
    {
        this.hostingEnvironment = hostingEnvironment;
    }

    public void ConfigureServices(IServiceCollection services)
    {
        services.AddMvc()
            .SetCompatibilityVersion(CompatibilityVersion.Version_2_2);

        if(hostingEnvironment.IsDevelopment())
        {
            var httpClient = new HttpClient(new HttpClientHandler()
            {
                // Set your proxy details here
            });
            services.AddSingleton(httpClient);
        }
        else
        {
            services.AddSingleton<HttpClient, HttpClient>();
        }
    }        

    public void Configure(IApplicationBuilder app, IHostingEnvironment env)
    {
        app.UseMvc();
    }
}
[Route("api/[controller]")]
[ApiController]
public class ValuesController : ControllerBase
{
    private readonly HttpClient httpClient;

    public ValuesController(HttpClient httpClient)
    {
        this.httpClient = httpClient;
    }
}