Échec de l’exécution de l’activité de service REST de System Center 2012 Orchestrator

Cet article résout un problème dans lequel l’activité appeler REST de service ne parvient pas à appeler un runbook et la propriété journal détaillé historique des détails ne peut pas être vide.

Version du produit d’origine :   Microsoft System Center 2012 Orchestrator
Numéro de la base de connaissances initiale :   2853747

Symptômes

Lors de la tentative d’utilisation du Guide du pack d’intégration REST (Representational State Transfer) pour Orchestrator dans System Center 2012 SP1 pour appeler un service REST, des problèmes peuvent se produire. Les caractéristiques décrites ci-dessous concernent l’appel d’un runbook dans Orchestrator à l’aide du pack d’intégration mentionné précédemment.

Communiqué
Orchestrator 2012
« Representational State Transfer (REST) Guide d’intégration pour Orchestrator dans System Center 2012 SP1 » (Forward appelé « REST IP »)
Activité « appeler le service REST » configurez pour appeler un Runbook dans Orchestrator 2012 à l’aide des valeurs de propriété suivantes :

Méthode HTTP :
POST

ADRESSE
https://<servername>:81/orchestrator2012/orchestrator.svc/jobs

En-tête de requête :
Content-type : application/Atom + XML

Corps de la demande :
<?xml version="1.0" encoding="utf-8"?><entry xmlns="http://www.w3.org/2005/Atom" xmlns:d="https://schemas.microsoft.com/ado/2007/08/dataservices" xmlns:m="https://schemas.microsoft.com/ado/2007/08/dataservices/metadata"><category term="Microsoft.SystemCenter.Orchestrator.WebService.Job" scheme="https://schemas.microsoft.com/ado/2007/08/dataservices/scheme" /><id /><title /><published>0001-01-01T00:00:00-05:00 </published> <updated> 0001-01-01T00:00:00-05:00 </updated> <author> <name /> </author> <content type="application/xml"> <m:properties> <d:CreatedBy m:null="true" /> <d:CreationTime m:type="Edm.DateTime"> 0001-01-01T00:00:00 </d:CreationTime> <d:Id m:type="Edm.Guid"> 00000000-0000-0000-0000-000000000000 </d:Id> <d:LastModifiedBy m:null="true" /> <d:LastModifiedTime m:type="Edm.DateTime"> 0001-01-01T00:00:00 </d:LastModifiedTime> <d:Parameters> <![CDATA[<Data> <Parameter> <ID> {ef29ac2e-aeb1-4f80-90f5-634783b52aff} </ID> <Value> 'il s’agit de la valeur de param1. ' </Value> </Parameter> </Data> ]] ></d:Parameters> <d:ParentId m:type="Edm.Guid" m:null="true" /> <d:ParentIsWaiting m:type="Edm.Boolean" m:null="true" /> <d:RunbookId m:type="Edm.Guid"> d010b455-4fe9-4423-AB72-52e5dabcb4e8</d:RunbookId><d:RunbookServerId m:type="Edm.Guid" m:null="true" /><d:RunbookServers m:null="true" /><d:Status m:null="true" /></m:properties></content></entry>

La boîte de dialogue Propriétés s’enregistre et se ferme sans erreur.

L’exécution de l’activité ne fonctionne pas et les exceptions suivantes se trouvent dans les détails de l’historique des journaux :

La propriété « URL » ne peut pas être vide. Fournissez une valeur pour « URL ».
Exception : exception
Site cible : RestIP. checkPropertiesNotEmpty
Trace de la pile :
at Microsoft.SystemCenter. Orchestrator. Integration. REST. ServerExtension. RestIP. checkPropertiesNotEmpty (String, propriété, String DESC)
at Microsoft.SystemCenter.Orchestrator.Integration.REST.ServerExtension.RestIP.Exejolie (demande IActivityRequest, réponse IActivityResponse)

La propriété a été attribuée comme indiqué ci-dessus. L’examen de l’activité runbook après l’échec révèle que toutes les propriétés précédemment sont désormais vides.

Cause

Il s’agit d’un problème connu lié à l’IP REST et dû au corps de la demande contenant une balise CDATA.

Résolution

Il existe quelques solutions de contournement différentes pour ce problème. Les détails ci-dessous concernent cet appel de service REST spécifique à Orchestrator documenté dans la section symptômes .

Supprimez les balises CDATA du corps de la demande et codez la chaîne XML manuellement ou par le biais d’un nombre d’outils ou de sites Web disponible. Ce qui doit être codé manuellement est la chaîne dans la balise CDATA :

<Data><Parameter><ID>{ef29ac2e-aeb1-4f80-90f5-634783b52aff}</ID><Value>'This is the value for Param1.'</Value></Parameter></Data>

Une fois encodé, il se présente comme suit :

&lt ; Data & gt ; & lt Paramètre & gt ; & lt ; ID & gt ; { ef29ac2e-aeb1-4f80-90f5-634783b52aff} & lt ;/ID & gt ; & lt Valeur & gt ; & #39 ; Il s’agit de la valeur de param1. & #39 ; & lt ;/value & gt ; & lt ;/Parameter & gt ; & lt ;/Data & gt ;

Ensuite, placez la chaîne résultante dans la propriété Body de la demande et, dans cet exemple, il se présente comme suit :

<?xml version="1.0" encoding="utf-8"?><entry xmlns="http://www.w3.org/2005/Atom" xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices" xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata"><category term="Microsoft.SystemCenter.Orchestrator.WebService.Job" scheme="http://schemas.microsoft.com/ado/2007/08/dataservices/scheme" /><id /><title /><published>0001-01-01T00:00:00-05:00 </published> <updated> 0001-01-01T00:00:00-05:00 </updated> <author> <name /> </author> <content type="application/xml"> <m:properties> <d:CreatedBy m:null="true" /> <d:CreationTime m:type="Edm.DateTime"> 0001-01-01T00:00:00 </d:CreationTime> <d:Id m:type="Edm.Guid"> 00000000-0000-0000-0000-000000000000 </d:Id> <d:LastModifiedBy m:null="true" /> <d:LastModifiedTime m:type="Edm.DateTime"> 0001-01-01T00:00:00 </d:LastModifiedTime> <d:Parameters> & lt ; Data & gt ; & lt Paramètre & gt ; & lt ; ID & gt ; { ef29ac2e-aeb1-4f80-90f5-634783b52aff} & lt ;/ID & gt ; & lt Valeur & gt ; ' Il s’agit de la valeur de param1. ' & lt ;/value & gt ; & lt ;/Parameter & gt ; & lt ;/Data & gt ; </d:Parameters> <d:ParentId m:type="Edm.Guid" m:null="true" /> <d:ParentIsWaiting m:type="Edm.Boolean" m:null="true" /> <d:RunbookId m:type="Edm.Guid"> d010b455-4fe9-4423-ab72-52e5dabcb4e8</d:RunbookId><d:RunbookServerId m:type="Edm.Guid" m:null="true" /><d:RunbookServers m:null="true" /><d:Status m:null="true" /></m:properties></content></entry>

Les autres options d’appel d’une runbook qui évitent ce scénario seraient les suivantes :

Informations supplémentaires

Ce scénario n’est pas propre à appeler le service Orchestrator lui-même et peut être rencontré lors de l’appel d’autres services REST en fonction des paramètres requis envoyés dans la demande au service REST ciblé.