【问题标题】:Owin get query string parametersOwin获取查询字符串参数
【发布时间】:2016-05-04 10:57:58
【问题描述】:

我正在尝试从 Owin 请求中获取查询字符串参数。尽管此参数在查询字符串中,但参数“test”的获取操作仍为空。如何从 OWIN 主机读取请求参数?

呼叫:

localhost:5000/?test=firsttest

代码:

public class Startup
{
    public void Configuration(IAppBuilder app)
    {
        app.UseHandlerAsync((req, res) =>
        {
            string paramTest = req.Get<string>("test");                             
            return res.WriteAsync(paramTest);
        });
    }

【问题讨论】:

    标签: .net owin katana


    【解决方案1】:

    Get&lt;T&gt; 在 OWIN 环境字典中查找任何键。但是,单个 GET 请求参数不是该字典的一部分。您可以使用req.QueryString 获取完整的查询字符串,这相当于req.Get&lt;string&gt;("owin.RequestQueryString") 并在您的情况下返回test=firsttest。这很容易解析。

    另一种选择是这样的:

            app.Use(async (ctx, next) =>
            {
                var param = ctx.Request.Query.Get("test");
                await next();
            });
    

    IOwinRequest 实现为您提供解析的查询字符串。请注意,从IOwinContext.Request 获取的对象实现了IOwinRequest,而传递给UseHandlerAsync 的对象是完全不同的类型(Owin.Types.OwinRequest),它既不提供上下文也不提供解析的查询字符串(afaik)。

    【讨论】:

      【解决方案2】:

      有同样的问题,这是我的解决方案。

      在这个非常简单的示例 (https://docs.microsoft.com/en-us/aspnet/web-api/overview/hosting-aspnet-web-api/use-owin-to-self-host-web-api) 中充当特定控制器的基类的 ApiController 具有包含查询字符串的属性 this.Request.RequestUri.Query。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-12-09
        • 2021-12-23
        • 1970-01-01
        • 1970-01-01
        • 2021-05-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多