Błąd Orchestrator 2012 R2 REST OIP: HTTP Version should be either 1.0 or 1.1

Dzisiaj szybka diagnostyka problemu przedstawionego w tytule postu.
Rozważamy następujący scenariusz:

 

  1. Orchestrator 2012 R2 zainstalowany na serwerze Windows 2012 R2
  2. Zaimportowany Integration Pack dla REST
  3. Skonfigurowane ustawienia regionalne które zakładają separator dziesiętny inny niż kropka (‘.’)
  4. W parametrach akcji „Invoke Rest Service” jest wprowadzona zgodna z dokumentacją wartość ciągu „1.0″ lub „1.1″

 

W Polsce, mamy Z scenariuszem takim mamy do czynienia zazwyczaj , gdzie zwyczajowym separatorem dziesiętnym jest przecinek.
I to właśnie on jest powodem powstania problemu, w przypadku gdy jesteśmy pewni że ostatni punkt scenariusza został zrealizowany prawidłowo.
Wewnątrz implementacji tej akcji znajduje się odpowiednik następującego kodu (tutaj przytaczam powershell, aby łatwo było potwierdzić diagnozę):

 

1
2
3
4
5
6
7
$result = 0;
$HTTPVersion = „1.1”
$status = [float]::TryDecode($HTTPVersion, [ref]$result);
if(($status -ne $true) -or ($HTTPVersion -ne „1.0”) -or ($HTTPVersion -ne „1.1”))
{
„Return Error: HTTP Version should be either 1.0 or 1.1”;
}

 

W sytuacji, gdy w ustawieniach regionalnych separator dziesiętny nie jest ustawiony na znak '.' to w linii numer 3 zostanie ustawione $status == $false.

 

Rozwiązaniem jest ustawić klucz rejestru HKU\SID\Control Panel\International\sDecimal
oraz HKU\SID\Control Panel\International\sMonDecimalSep dla użytkownika o wartości SID na znak '.'
Na koniec należy zrestartować usługę orchestratora, a problem zostanie rozwiązany.

 

Po raz pierwszy opisałem temat odpowiadając na pytanie rosyjskojęzycznej osoby z technet’u.