C# 在URL字符串中斜杠之前转义fullstop

C# 在URL字符串中斜杠之前转义fullstop,c#,url-encoding,C#,Url Encoding,我发现了一个奇怪的现象,我正试图用C#清理/干扰指定的URL,结果得到404 它发生在一个句号后有一个正斜杠的地方——C#和Visual Studio决定删除这个句号 对于Visual Studio,这是链接到错误格式URL的字符串中的控件单击 在编译的C#中,字符串被转换,甚至在转换到新的URI()之前 链接是: (导致问题的是结尾处的“/”) 我尝试过转义ASCII中的fullstop+斜杠和Uri()构造函数中的“dontEscape”选项,但到目前为止没有成功 还有其他一些想法,比如如

我发现了一个奇怪的现象,我正试图用C#清理/干扰指定的URL,结果得到404

它发生在一个句号后有一个正斜杠的地方——C#和Visual Studio决定删除这个句号

对于Visual Studio,这是链接到错误格式URL的字符串中的控件单击

在编译的C#中,字符串被转换,甚至在转换到新的URI()之前

链接是:

(导致问题的是结尾处的“/”)

我尝试过转义ASCII中的fullstop+斜杠和Uri()构造函数中的“dontEscape”选项,但到目前为止没有成功

还有其他一些想法,比如如何让这个字符串允许正确的URL

谢谢。

这是我使用的:

    // call this line only once in application lifetime (when app starts)
    ApplyFixEndDotUrl();

    // --------------------------
    Uri testUrl = new Uri("http://www.mattmulholland.co.nz/Matt_Mulholland/Matt_Mulholland_-_Official_Website._Boom./rss.xml");
    string strUrl = testUrl.ToString();

    // --------------------------
    // -> using System.Reflection;

    public static void ApplyFixEndDotUrl()
    {
        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);

                    if ((flagsValue & 0x1000000) != 0)
                        flagsField.SetValue(parser, flagsValue & ~0x1000000);
                }
            }
        }
    }

此解决方案可在此处找到:

您的转义看起来像什么?使用此url时会发生什么:
http://www.mattmulholland.co.nz/Matt_Mulholland/Matt_Mulholland_-_Official_Website._Boom%2E/rss.xml