Рекламному объявлению Azure не удается обновить пользователей с помощью исправления в пакете nuget microsoft.systemForCrossDomainIdentityManagement

Хотя верно, что сама команда не может отключить глобус, пользователь может сказать оболочке Unix, чтобы не глотать определенную команду. Обычно это делается путем редактирования файлов конфигурации оболочки. Предполагая, что команда foo может быть найдена по пути к команде, в соответствующий файл конфигурации необходимо добавить следующее:

Для оболочек sh, bash и ksh:

alias foo='set -f;foo';foo(){ command foo "$@";set +f;}

Для оболочек csh и tcsh:

alias foo 'set noglob;\foo \!*;unset noglob'

Для оболочки zsh:

alias foo='noglob foo'

Путь к командной строке не нужно использовать. Скажем, команда foo хранится в каталоге ~ / bin, а затем следующее:

Для оболочек sh, bash и ksh:

alias foo='set -f;foo';foo(){ ~/bin/foo "$@";set +f;}

Для csh и tcsh shells:

alias foo 'set noglob;$home/bin/foo \!*;unset noglob'

Для оболочки zsh:

alias foo='noglob ~/bin/foo'

Все вышеперечисленное было протестировано с использованием OSX 10.9.2 от Apple. Примечание. При копировании вышеуказанного кода будьте осторожны при удалении любых пробелов. Они могут быть значительными.

Обновление:

Пользователь geira указал, что в случае оболочки bash

alias foo='set -f;foo';foo(){ ~/bin/foo "$@";set +f;}

можно заменить на

reset_expansion(){ CMD="$1";shift;$CMD "$@";set +f;}
alias foo='set -f;reset_expansion ~/bin/foo'

, что устраняет необходимость в функции foo.

Некоторые веб-сайты, используемые для создания этого документа:

0
задан Marilee Turscak - MSFT 24 January 2019 в 19:27
поделиться

1 ответ

Поскольку ответа от Microsoft не было больше месяца, я знаю, что единственный способ исправить это - перехватить вызов до того, как он попадет в часть кода Microsoft (с использованием промежуточного программного обеспечения), и изменить его на формат, который они ожидают: \

Я обсудил проблему и решение в следующей ссылке, но я все еще жду исправления от Microsoft: \ http: //pilpag.blogspot .com / 2019/02 / enable-scim-using-microsoftsystemforc.html

Простое исправление выглядит так:

public class PatchRequestUpdaterMiddleware : OwinMiddleware

{

     private const string OperationValueFinderRegex = "({[\\s\\w\":,.\\[\\]\\\\]*op[\\s\\w\":,.\\[\\]\\\\]*\"value\"\\s*:\\s*)(\"[\\w\\s\\-,.@?!*;\'\\(\\)]+\")"; //{"op":"x","value":"Andrew1"}

public override async Task Invoke(IOwinContext context)

    {

        if (context.Request.Method.ToLower() != "patch")

        {

            await Next.Invoke(context);

            return;

        }

        var streamReader = new StreamReader(context.Request.Body);

        string body = streamReader.ReadToEnd();

        body = Regex.Replace(body, OperationValueFinderRegex, m => $"{m.Groups[1].Value}[{{\"value\":{m.Groups[2].Value}}}]"); //{"op":"x","value":"Ashkan"} ==>> {"op":"x","value":[{"value":"Ashkan"}]}

        context.Request.Body = new MemoryStream(Encoding.UTF8.GetBytes(body));

        await Next.Invoke(context);

    }

 }

И просто добавьте это к провайдеру, которого вы создали:

class myProvider:ProviderBase

{

....

   private void OnServiceStartup(IAppBuilder appBuilder, HttpConfiguration configuration)

        {

...

  appBuilder.Use<PatchRequestUpdaterMiddleware>();

...

}
0
ответ дан Ashkan Sirous 24 January 2019 в 19:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: