ASP.NET OWIN Middleware - изменить HTTP-ответ - PullRequest
0 голосов
/ 14 января 2019

Мне нужно перехватить все aspx и js файловые запросы и заменить некоторые текстовые метки , если они присутствуют. Это промежуточное ПО должно работать как модуль IIS, очевидно, не мешая нормальной работе веб-приложения. Я написал некоторый код, но понятия не имею, как это сделать.

public partial class Startup
{
    public void Configuration(IAppBuilder app)
    {
        app.Use(typeof(FilterMiddleware), Console.Out);
    }
}

public class FilterMiddleware : OwinMiddleware
{
    private readonly TextWriter logger;
    private readonly OwinMiddleware nextMiddleware;

    public FilterMiddleware(OwinMiddleware nextMiddleware, TextWriter logger) : base(nextMiddleware)
    {
        this.nextMiddleware = nextMiddleware;
        this.logger = logger;
    }

    public override async Task Invoke(IOwinContext context)
    {
        var headers = context.Request.Headers;

        // IF .js OR .ASPX REPLACE TEXT HERE //

        await nextMiddleware.Invoke(context);
    }
}

1 Ответ

0 голосов
/ 14 января 2019

Я думаю, что вы ищете

if (context.Request.ContentType = "application/json") // or whatever MIME type
{
   ...
}

Затем, как только вы выполните всю свою обработку, не забудьте создать ответ обратно

context.Response.ContentType = "application/json";
string result = ""; // whatever string you are sending back
await context.Response.WriteAsync(result);

Тем не менее, если это вызывает какую-то ошибку, например, неподдерживаемый метод (например, PUT)

context.Response.StatusCode = StatusCodes.Status405MethodNotAllowed;
await context.Response.WriteAsync(String.Empty);
...