我试图从Owin请求获取查询字符串参数.虽然此参数位于查询字符串中,但参数"test"的获取操作仍为空.如何从OWIN主机读取请求参数?
呼叫:
localhost:5000/?test=firsttest
Run Code Online (Sandbox Code Playgroud)
码:
public class Startup
{
public void Configuration(IAppBuilder app)
{
app.UseHandlerAsync((req, res) =>
{
string paramTest = req.Get<string>("test");
return res.WriteAsync(paramTest);
});
}
Run Code Online (Sandbox Code Playgroud)
Get<T>在OWIN环境字典中查找任何键.但是,单个GET请求参数不是该字典的一部分.您可以获得完整的查询字符串,使用req.QueryString该字符串等效req.Get<string>("owin.RequestQueryString")并返回test=firsttest您的案例.这很容易解析.
另一种选择是这样的:
app.Use(async (ctx, next) =>
{
var param = ctx.Request.Query.Get("test");
await next();
});
Run Code Online (Sandbox Code Playgroud)
IOwinRequest实现为您提供解析的查询字符串.请注意,对象是从IOwinContext.Requestimplements 获取的,IOwinRequest而传递给的对象是UseHandlerAsync完全不同的类型(Owin.Types.OwinRequest),它既不提供上下文也不提供解析的查询字符串(afaik).
| 归档时间: |
|
| 查看次数: |
4184 次 |
| 最近记录: |