Webapp'a bilgi vermesi gereken bir C# uygulaması yazıyorum. İki URL'yi birleştirmek için System.Uri
'u kullanmaya çalışıyorum: Temel URL ve ihtiyacım olan web sunucusunun belirli hizmetine (veya birçoğuna) olan göreli yol. webappBackendURL
isimli bir sınıf üyem var, tek bir yerde tanımlamak istediğim tek bir yerde, tüm çağrıları yapıyorum (webappBackendURL
, örneklerimin gösterdiği gibi tanımlanmadı). URL'ler sorgu dizesi parçaları ile birleştirilir nasıl korunur?
System.Uri webappBackendURL = new System.Uri("http://example.com/");
System.Uri rpcURL = new System.Uri(webappBackendURL,"rpc/import");
// Result: http://example.com/rpc/import
Bu
webappBackendURL
bir sorgu dizesi içeriyorsa ancak, bu korunmaz, çalışır.
System.Uri webappBackendURL = new System.Uri("http://example.com/?authtoken=0x0x0");
System.Uri rpcURL = new System.Uri(webappBackendURL,"rpc/import");
// Result: http://example.com/rpc/import <-- (query string lost)
URL'leri birleştirmenin daha iyi bir yolu var mı? .NET kütüphanesi kapsamlı, bu yüzden bunu halletmek için yerleşik bir yolu gözden kaçırmış olabilirim.
System.Uri webappBackendURL = new System.Uri("http://example.com/?authtoken=0x0x0");
System.Uri rpcURL = new System.Uri(webappBackendURL,"rpc/import?method=overwrite&runhooks=true");
// Result: http://example.com/rpc/import?authtoken=0x0x0&method=overwrite&runhooks=true
Basit yolumdan bir Uri'yi oluşturmaya çalıştığımda bir "UriFormatException" a rastladım, bu yüzden "MergerUri" yi güvenilir bir şekilde kullanabileceğimi düşünmüyorum. İlk önerinizi bir yönteme sarmayı deneyebilirim. – jimp
Üzgünüz, önce test etmedim. Güncellenen biri çalışacak, ancak karar verdiğiniz şeye benziyor. – jfin3204