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
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.