Нормализация частей URL при отправке запросов

Foster

Client
Регистрация
12.03.2018
Сообщения
15
Благодарностей
3
Баллы
3
Добрый вечер всем.

Согласно документации https://docs.microsoft.com/en-us/dotnet/api/system.uri?view=netframework-4.0 при использовании /../ и пр конструкций в юрл при отправке запросов, происходит приведение к /, например. Для решения вопроса попробовал добавить (https://stackoverflow.com/questions/7307833/creating-an-uri-in-net-automatically-urldecodes-all-parameters-from-passed-stri/7308769#7308769)

<uri>
<schemeSettings>
<add name="http" genericUriParserOptions="DontUnescapePathDotsAndSlashes"/>
<add name="https" genericUriParserOptions="DontUnescapePathDotsAndSlashes"/>
</schemeSettings>
</uri>

согласно https://docs.microsoft.com/en-us/dotnet/framework/configure-apps/file-schema/network/add-element-for-schemesettings-uri-settings?redirectedfrom=MSDN#configuration-files
в файлы ProjectMaker.exe.config и ZennoPoster.exe.config, но к сожалению не было результата.

Подскажите, пожалуйста, в какой именно файл .config необходимо добавить? или необходимо свою dll писать с dll.config и добавить ссылку в ProjectMaker.exe.config и ZennoPoster.exe.config? Возможно ли использовать эти настройки для всех проектов глобально?

Заранее спасибо.
 

Foster

Client
Регистрация
12.03.2018
Сообщения
15
Благодарностей
3
Баллы
3
вопрос решили с помощью такого метода

https://grootveld.com/archives/21/url-encoded-slashes-in-systemuri

Код:
static class UriHacks
{
    // System.UriSyntaxFlags is internal, so let's duplicate the flag privately
    private const int UnEscapeDotsAndSlashes = 0x2000000;

    public static void LeaveDotsAndSlashesEscaped(this Uri uri)
    {
        if (uri == null)
        {
            throw new ArgumentNullException("uri");
        }

        FieldInfo fieldInfo = uri.GetType().GetField("m_Syntax", BindingFlags.Instance | BindingFlags.NonPublic);
        if (fieldInfo == null)
        {
            throw new MissingFieldException("'m_Syntax' field not found");
        }
        object uriParser = fieldInfo.GetValue(uri);

        fieldInfo = typeof(UriParser).GetField("m_Flags", BindingFlags.Instance | BindingFlags.NonPublic);
        if (fieldInfo == null)
        {
            throw new MissingFieldException("'m_Flags' field not found");
        }
        object uriSyntaxFlags = fieldInfo.GetValue(uriParser);

        // Clear the flag that we don't want
        uriSyntaxFlags = (int)uriSyntaxFlags & ~UnEscapeDotsAndSlashes;

        fieldInfo.SetValue(uriParser, uriSyntaxFlags);
    }
}
спасибо @Moadip за помощь

PS пример проекта в приложении
 

Вложения

Последнее редактирование:
  • Спасибо
Реакции: orka13

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)