Dzisiaj szybka diagnostyka problemu przedstawionego w tytule postu.
Rozważamy następujący scenariusz:
- Orchestrator 2012 R2 zainstalowany na serwerze Windows 2012 R2
- Zaimportowany Integration Pack dla REST
- Skonfigurowane ustawienia regionalne które zakładają separator dziesiętny inny niż kropka (’.’)
- 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
1 | '.' |
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.