2016-05-04 3 views
5

Я пытаюсь получить параметры строки запроса из запроса Owin. Получить операцию для параметра 'test' остается пустым, хотя этот параметр был в строке запроса. Как я могу прочитать параметр запроса с хоста OWIN?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); 
     }); 
    } 

ответ

5

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(); 
     }); 

IOwinRequest реализации предоставляют вам анализируемой строки запроса. Обратите внимание, что объект, который получает от IOwinContext.Request, реализует IOwinRequest, а объект, который передан в UseHandlerAsync, имеет совершенно другой тип (Owin.Types.OwinRequest), который не предоставляет контекст или строку синтаксического анализа (afaik).

 Смежные вопросы

  • Нет связанных вопросов^_^