如何解决如何在 ASP.NET Core 5.0 中忽略对 favicon.ico 的请求?
启动:
public class Startup
{
public void ConfigureServices(IServiceCollection services)
{
services.AddTransient<RandomCounter>();
services.AddTransient<ICounter>(provider =>
{
var counter = provider.GetService<RandomCounter>();
return counter;
});
services.AddTransient<CounterService>();
}
public void Configure(IApplicationBuilder app)
{
app.UseMiddleware<CounterMiddleware>();
}
}
对于每个新请求,计数器增加 2。我希望每次新调用计数器增加 1。在这种情况下我该怎么办?或者在这里我只需要为每个新请求添加一个条件:?
中间件:
using Dependency.Services;
using Microsoft.AspNetCore.Http;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
namespace Dependency
{
public class CounterMiddleware
{
private readonly RequestDelegate _next;
private int i = 0;
public CounterMiddleware(RequestDelegate next)
{
_next = next;
}
public async Task InvokeAsync(HttpContext httpContext,ICounter counter,CounterService counterService)
{
i++;
httpContext.Response.ContentType = "text/html; charset=utf-8";
await httpContext.Response.WriteAsync($"Request {i}; Counter: {counter.Value}; Service: {counterService.Counter.Value}");
}
}
}
解决方法
public async Task InvokeAsync(HttpContext httpContext,ICounter counter,CounterService counterService)
{
if (httpContext.Request.Path.HasValue && !httpContext.Request.Path.Value.StartsWith("/favicon.ico"))
{
i++;
httpContext.Response.ContentType = "text/html; charset=utf-8";
await httpContext.Response.WriteAsync($"Request {i}; Counter: {counter.Value}; Service: {counterService.Counter.Value}");
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。