У меня есть промежуточное ПО для получения HTTP-запросов, начинающихся с «proxycall», и только те.Я думал, что смогу вызвать промежуточное программное обеспечение внутри app.map в файле startup.config, но проблема в том, что я не знаю, как его создать.
Вот мой файл программы:
public static void Main(string[] args)
{
CreateWebHostBuilder(args).Build().Run();
}
public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseStartup<Startup>()
.ConfigureLogging(logging =>
{
logging.ClearProviders();
logging.SetMinimumLevel(Microsoft.Extensions.Logging.LogLevel.Trace);
})
.UseNLog();
Вот мой файл запуска:
public class Startup
{
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}
public IConfiguration Configuration { get; }
public void ConfigureServices(IServiceCollection services)
{
string connectionString =
Configuration.GetConnectionString("DefaultConnection");
services.AddDbContext<GotMapContext>(o => o.UseSqlServer(connectionString));
services.AddSingleton<ConfigHelper>(c => new ConfigHelper(Configuration));
services.Configure<GeoProxyConfig>(Configuration.GetSection("AppSettings"));
services.AddHttpClient();
services.AddAutoMapper();
services.AddMvc()
.AddJsonOptions(o => o.SerializerSettings.ContractResolver =
new DefaultContractResolver());
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseDeveloperExceptionPage();
app.UseStatusCodePages();
app.UseStaticFiles();
app.Map(new PathString("/proxycall"),
a => a.Run(async(context ) =>
{
// TODO : Create an new instance of GeoProxyMiddleware.
// The class requires the config, httpclient and logger instance.
}));
app.UseMvcWithDefaultRoute();
}
Вот мое промежуточное ПО, которое я пытаюсь вызвать из app.map:
public class GeoProxyMiddleware
{
private readonly IOptions<GeoProxyConfig> _geoProxyConfig;
private readonly IHttpClientFactory _httpClientFactory;
private readonly ILogger<GeoProxyMiddleware> _logger;
public GeoProxyMiddleware(
IOptions<GeoProxyConfig> config,
IHttpClientFactory HttpClientFactory,
ILogger<GeoProxyMiddleware> logger)
{
_geoProxyConfig = config;
_httpClientFactory = HttpClientFactory;
_logger = logger;
}
}