2011-06-05 20 views
8

Tam duraktan - '.' sonuna kadar olan bir dizeden bir Uri sınıfı örneği oluşturursam, sonuç Uri nesnesinden kesilirler. C# ÖrneğinSystem.Uri sınıfı kesiliyor '.' karakterler

:

Uri test = new Uri("http://server/folder.../"); 
test.PathAndQuery; 

döner yerine "/folder.../" nin "//klasör".

"." "% 2E" ile yardımcı olmadı.

Uri sınıfını takip eden karakterleri tutmaya nasıl başlarım?

cevap

8

Yansımayı arama kodunuzdan önce kullanabilirsiniz.

MethodInfo getSyntax = typeof(UriParser).GetMethod("GetSyntax", System.Reflection.BindingFlags.Static | System.Reflection.BindingFlags.NonPublic); 
FieldInfo flagsField = typeof(UriParser).GetField("m_Flags", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic); 
if (getSyntax != null && flagsField != null) 
{ 
     foreach (string scheme in new[] { "http", "https" }) 
     { 
      UriParser parser = (UriParser)getSyntax.Invoke(null, new object[] { scheme }); 
      if (parser != null) 
      { 
       int flagsValue = (int)flagsField.GetValue(parser); 
       // Clear the CanonicalizeAsFilePath attribute 
       if ((flagsValue & 0x1000000) != 0) 
       flagsField.SetValue(parser, flagsValue & ~0x1000000); 
      } 
     } 
} 

Uri test = new Uri("http://server/folder.../"); 
Console.WriteLine(test.PathAndQuery); 

Bu Connect sunulmuştur ve geçici çözüm yukarıdaki orada gönderilmiş.

+0

Bu yardımcı olur. Ama şimdi takip etmeliyim '.' HttpContext.Current.Request.Url.PathAndQuery çağrısı. Bunun için başka bir soru hazırladım: http://stackoverflow.com/questions/6804291/asp-net-httprequest-url-truncates-trailing-characters –