私は魅力的な新しいWebAPIにGETしています。私のパラメータの1つはencodeURIComponentを使用してエスケープするURLです。フィドラーでのリクエストは、C#MVC HTTP URLのASP.NET URLパラメータが正しくエンコードされていません
GET /api/myapi/myurl/https%3A%2F%2Ft.co%2FkIEnlT8Mvn HTTP/1.1
のようになります。
はしかし、私は私のApplication_BeginRequestでリクエストを見れば、私は
?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"
を取得するので、私の質問は:私はクライアントから送信されたもののうち、正しいURLを取得できますか?私は
良いURLのhttpsのいずれかを取得したい:SlashSlasht.co/kIEnlT8Mvn(SO短いURLを嫌っているので//が変更)
または
のhttps%3A%2F%2Ft.co%2FkIEnlT8Mvn
ないのhttps:
/t.co/kIEnlT8Mvnは(私も同じ結果で、エスケープ()とにencodeURL()でURLをエンコードしようとしました。)
いやが、それは理にかなっています。既存のハンドラにコードを追加してURLを修正しましたが、あなたのソリューションはおそらくもっと良いでしょう。私はそれができるだけ周りに少しでもぎこちなく動くようにしたいので、私はそれをすることの私の全体の方法を変更するかもしれません。 – weloytty