最近需要和某公司进行接口对接,发现用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); } } }
//使用 var url = new Uri((mdishInfopic ?? "").Trim() + "?newDate=" + seed.NextDouble());