Owin获取查询字符串参数
Owin get query string parameters
我正在尝试从 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);
});
}
Get<T>
在 OWIN 环境字典中查找任何键。不过,各个 GET 请求参数不是该字典的一部分。您可以使用 req.QueryString
获得完整的查询字符串,在您的情况下相当于 req.Get<string>("owin.RequestQueryString")
和 returns 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).
有同样的问题,这是我的解决方案。
在这个非常简单的示例 (https://docs.microsoft.com/en-us/aspnet/web-api/overview/hosting-aspnet-web-api/use-owin-to-self-host-web-api) 中,作为特定控制器基础 class 的 ApiController 有一个包含查询字符串的 属性 this.Request.RequestUri.Query .
我正在尝试从 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);
});
}
Get<T>
在 OWIN 环境字典中查找任何键。不过,各个 GET 请求参数不是该字典的一部分。您可以使用 req.QueryString
获得完整的查询字符串,在您的情况下相当于 req.Get<string>("owin.RequestQueryString")
和 returns 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).
有同样的问题,这是我的解决方案。
在这个非常简单的示例 (https://docs.microsoft.com/en-us/aspnet/web-api/overview/hosting-aspnet-web-api/use-owin-to-self-host-web-api) 中,作为特定控制器基础 class 的 ApiController 有一个包含查询字符串的 属性 this.Request.RequestUri.Query .