2016-04-13 17 views
0

Bu yüzden, yeni WebAPI'm için bir GET yapıyorum ve parametrelerimden biri, encodeURIComponent kullanarak kaçtığım bir URL.C# MVC ASP.NET URL parametresi, HTTP kodsuz yanlış kodlanmış GET

GET /api/myapi/myurl/https%3A%2F%2Ft.co%2FkIEnlT8Mvn HTTP/1.1 

yüzden bu iyi gibi fiddler olarak, istek görünüyor. Benim Application_BeginRequest isteği bakarsak

Ancak, ben

?HttpContext.Current.Request.Url.AbsolutePath 
"/api/myapi/myurl/https:/t.co/kIEnlT8Mvn" 

?HttpContext.Current.Request.Url.AbsoluteUri 
"http://localhost:23652/api/myapi/myurl/https:/t.co/kIEnlT8Mvn" 

?HttpContext.Current.Request.Url.OriginalString 
"http://localhost:23652/api/myapi/myurl/https:/t.co/kIEnlT8Mvn" 

?Request.RawUrl 
"/api/myapi/myurl/https:/t.co/kIEnlT8Mvn" 

Yani benim sorudur olsun: Ben istemciden gönderilen şeyin dışarı doğru URL'yi alabilirim? (SO kısa URL'ler nefret etmesinden // değişti)

veya

https% 3A% 2F% 2Ft.co% 2FkIEnlT8Mvn SlashSlasht.co/kIEnlT8Mvn: Ben iyi bir URL https ya

almak istiyorum

değil https:

/t.co/kIEnlT8Mvn (Ben de aynı sonuçlarla, kaçış() ve encodeURL() ile URL'yi kodlayan denedim.)

cevap

1

bir bölü bir olduğunu URL parçaları arasında ayırıcı ve .NET veya MVC içinde bir şey görünüyor veya Yönlendirme sistemi, yinelenen eğik çizgiyi kaldırarak bu konuda katı davranıyor. Bunun çözülüp çözülemeyeceğini bilmiyorum.

Ben böyle API & bir sorgu dizesi bir parametre kullanmak yapıyoruz çağrı, bir şey hem değiştirebilirsem işe yarayacak düşünüyorum:

GET /api/myapi/myurl?address=https%3A%2F%2Ft.co%2FkIEnlT8Mvn HTTP/1.1

public ActionResult MyUrl(string address) 
{ 
    // do your magic here... 
} 
+0

evet, gayet mantıklı. Aldığım URL'leri düzeltmek için mevcut işleyicime kod ekledim, ancak çözümünüz muhtemelen daha iyi olacaktır. Bunu yapmamın tüm yolunu değiştirebilirim, çünkü olabildiğince küçük bir işe yaramasını istiyorum. – weloytty

İlgili konular