Current URL in ASPCore Middleware?

2020-04-09 11:16发布

Is there a way I can access the current Requested URL in ASPCore 2.0 Middleware?

Is there something I can Inject?

2条回答
Ridiculous、
2楼-- · 2020-04-09 11:23

HttpContext object will be passed to the Invoke method of your middleware. You can access the Request property on that.

You can use the GetDisplayUrl extension method or GetEncodedUrl extension method.

public Task Invoke(HttpContext context)
{
    var url1 =context.Request.GetDisplayUrl();
    var url2  = context.Request.GetEncodedUrl();       


    // Call the next delegate/middleware in the pipeline
    return this._next(context);
}

These 2 extension methods are defined in Microsoft.AspNetCore.Http.Extensions namespace. So make sure you have a using statement to include the namespace

using Microsoft.AspNetCore.Http.Extensions;
查看更多
叼着烟拽天下
3楼-- · 2020-04-09 11:42

Your middleware get HttpContext context which has

//
// Summary:
//     /// Gets the Microsoft.AspNetCore.Http.HttpRequest object for this request. ///
public abstract HttpRequest Request { get; }

So you may get all needed info in next way:

app.Use(async (context, next) =>
{
    //context.Request.Path
    //context.Request.QueryString
    ...

    await next.Invoke();

});
查看更多
登录 后发表回答