Задать вопрос

Как распарсить url в asp.net mvc?

Добрый день. Помогите, пожалуйста с проблемой. При авторизации через api Вконтакте, происходит переадресация на url вида: "localhost:58821/Auth # access_token= 123456712345123451234512345 &expires_in=0&user_id=1234567"
Обращение к Request.Url.AbsolutePath, Request.Url.AbsoluteUri или Request.RawUrl даёт только ссылку на хост. Как я могу получить параметры из данного url?
Upd.: Вероятно проблема в том что адрес и get параметры разделяются символом '#', а не '?', поэтому параметры получить не получается. Можно ли как-то получить всю строку?
Upd. - code:
public class HomeController : Controller  
   {  
     private readonly AuthorizationRoot _authorizationRoot;  
     private const string ProviderNameKey = "providerName";  
     private string ProviderName  
     {  
       get { return (string)Session[ProviderNameKey]; }  
       set { Session[ProviderNameKey] = value; }  
     }  
     public HomeController(AuthorizationRoot authorizationRoot)  
     {  
       _authorizationRoot = authorizationRoot;  
       mVkProvider = new VkProvider();  
     }  
     public ActionResult Index()  
     {  
       var model = _authorizationRoot.Clients.Select(client => new LoginInfoModel  
       {  
         ProviderName = client.Name  
       });  
       return View(model);  
     }  
     /// <summary>  
     /// Redirect to login url of selected provider.  
     /// </summary>      
     public RedirectResult Login(string providerName)  
     {  
       ProviderName = providerName;  
       var client = GetClient();  
       string url = client.GetLoginLinkUri();  
       url = url.Replace("response_type=code", "response_type=token");  
       RedirectResult redirectResult = new RedirectResult(url);  
       return redirectResult;  
     }  
     /// <summary>  
     /// Renders information received from authentication service.  
     /// </summary>  
     public ActionResult Auth()  
     {  
       string fragment = Request.Url.Fragment; // fragment = ""  
       OAuth2Client client = (OAuth2Client)GetClient();  
       var userInfo = client.GetUserInfo(Request.QueryString);  
       mVkProvider.AccessToken = client.AccessToken;  
       JObject res = mVkProvider.SearchReferences("Test");  
       return View(userInfo);  
     }  
     private IClient GetClient()  
     {  
       return _authorizationRoot.Clients.First(c => c.Name == ProviderName);  
     }  
   }  
 }
  • Вопрос задан
  • 816 просмотров
Подписаться 4 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 1
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы