uri不能处理结尾为点的url的问题

最近需要和某公司进行接口对接,发现用WebClient获取URL结尾带.的资源,会出404错误。但是用IE还有其它浏览器访问此资源,还能找到它。很神奇。

于是,我百度了,找到的一堆都是说此url不规范。但是它不能解决我的问题。

然后,我google之,在http://stackoverflow.com/上面,终于是找到了如此解析此问题的办法:

Random seed = new Random();

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);
       }
    }
 }
//使用 v
ar url = new Uri((mdishInfopic ?? "").Trim() + "?newDate=" + seed.NextDouble());
原文地址:https://www.cnblogs.com/forhell/p/3308969.html