Training
Lernpfad
Use advance techniques in canvas apps to perform custom updates and optimization - Training
Use advance techniques in canvas apps to perform custom updates and optimization
Dieser Browser wird nicht mehr unterstützt.
Führen Sie ein Upgrade auf Microsoft Edge durch, um die neuesten Features, Sicherheitsupdates und den technischen Support zu nutzen.
In diesem Artikel werden häufige Clientfehler beschrieben, die bei verwendung der Dataverse-Web-API auftreten können und wie Sie sie vermeiden können.
Anfordern
GET [Organization URI]/api/data/v9.2/Account HTTP/1.1
Antwort
HTTP/1.1 404 Not Found
{
"error": {
"code": "0x8006088a",
"message": "Resource not found for the segment 'Account'."
}
}
Dieser Fehler tritt auf, wenn Sie den falschen Namen für eine Ressource verwenden. Diese Ressource kann der Name eines Entitätssatzes, einer Funktion oder einer Aktion sein. Bei diesen Ressourcennamen wird die Groß-/Kleinschreibung beachtet. Im vorherigen Beispiel wird ein Entitätssatz aufgerufen accounts
, jedoch kein benannter Satz Account
.
Wenn es sich bei der Ressource um eine Aktion handelt, die als benutzerdefinierte Prozessaktion definiert ist, kann dieser Fehler auch auftreten, wenn die benutzerdefinierte Prozessaktion inaktiv ist.
Anfordern
GET [Organization URI]/api/data/v9.2/accounts?$select=Name HTTP/1.1
Antwort
HTTP/1.1 400 Bad Request
{
"error": {
"code": "0x0",
"message": "Could not find a property named 'Name' on type 'Microsoft.Dynamics.CRM.account'."
}
}
Dieser Fehler tritt auf, wenn Sie den falschen Namen für eine Eigenschaft verwenden. Bei Eigenschaftennamen wird zwischen Groß- und Kleinschreibung unterschieden.
Im vorherigen Beispiel wird eine Eigenschaft aufgerufen name
, aber keine benannte Name
.
Stellen Sie sicher, dass der verwendete Name im CSDL-$metadata Dokument vorhanden ist. Weitere Informationen finden Sie unter Web-API-Eigenschaften.
Anfordern
POST [Organization URI]/api/data/v9.2/WhoAmI
Antwort
HTTP/1.1 404 Not Found
{
"error": {
"code": "",
"message": "No HTTP resource was found that matches the request URI '[Organization URI]/api/data/v9.2/WhoAmI'."
}
}
Dieser Fehler tritt auf, wenn die falsche HTTP-Methode auf eine Funktion oder Aktion angewendet wird. In diesem Fall erfordert die WhoAmI-Funktion die Verwendung, GET
wird jedoch POST
verwendet.
Beachten Sie, welche Art von OData-Vorgang Sie verwenden, und welche HTTP-Methode sie verwenden soll. Weitere Informationen finden Sie unter:
Anfordern
POST [Organization URI]/api/data/v9.2/accounts HTTP/1.1
{
"Name": "Account name"
}
Antwort
HTTP/1.1 400 Bad Request
{
"error": {
"code": "0x0",
"message": "An error occurred while validating input parameters:
Microsoft.Crm.CrmException: Invalid property 'Name' was found in entity 'Microsoft.Dynamics.CRM.account'.
---> Microsoft.OData.ODataException: Does not support untyped value in non-open type.<truncated for brevity>"
}
}
Dieser Fehler tritt auf, weil der falsche Name für eine Eigenschaft verwendet wurde. Bei Eigenschaftsnamen wird die Groß-/Kleinschreibung beachtet und Name
nicht name
verwendet.
Stellen Sie sicher, dass der verwendete Eigenschaftsname im CSDL-$metadata Dokument vorhanden ist. Weitere Informationen finden Sie unter Web-API-Eigenschaften.
Es gibt zwei separate Probleme, die bei diesem Fehler auftreten können. Der Unterschied liegt in der InnerException.
Dieser Fehler tritt auf, wenn ein ungültiger Navigationseigenschaftsname mit einer Anforderung gesendet wird.
Anfordern
POST [Organization URI]/api/data/v9.2/contacts HTTP/1.1
{
"firstname":"test",
"lastname":"contact",
"parentcustomerid@odata.bind": "accounts(a779956b-d748-ed11-bb44-6045bd01152a)"
}
Antwort
HTTP/1.1 400 Bad Request
{
"error": {
"code": "0x80048d19",
"message": "Error identified in Payload provided by the user for Entity :'contacts' ---->
InnerException : Microsoft.OData.ODataException: An undeclared property 'parentcustomerid'
which only has property annotations in the payload but no property value was found in the payload.
In OData, only declared navigation properties and declared named streams can be represented as
properties without values <truncated for brevity>".
}
}
Dieser Fehler tritt auf, da keine einzelwertige Navigationseigenschaft im Kontaktentitätstyp mit dem Namen vorhanden parentcustomerid
ist. Weitere Informationen finden Sie unter Eigenschaften der einzelwertigen Navigation.
parentcustomerid
ist der logische Name einer Nachschlagespalte in der Kontakttabelle. Alle Nachschlagevorgänge verfügen über eine oder mehrere einwertige Navigationseigenschaften in OData. Die Namen der Nachschlageeigenschaften stimmen nicht immer mit dem entsprechenden einzelwertigen Navigationseigenschaftennamen überein.
In diesem Fall handelt es sich bei der parentcustomerid
Spalte um einen Kundensuchtyp, eine Art von Nachschlagevorgang mit mehreren Tabellen, die entweder mit dem Konto oder den Kontakttabellen verknüpft werden können. Um diese Kundensuche zu unterstützen, gibt es zwei separate Beziehungen und jede hat eine andere einzelwertige Navigationseigenschaft. Die richtige einzelwertige Navigationseigenschaft in diesem Fall lautet parentcustomerid_account
.
Stellen Sie sicher, dass der verwendete Navigationseigenschaftsname im CSDL-$metadata Dokument vorhanden ist. Weitere Informationen finden Sie unter Web-API-Navigationseigenschaften, insbesondere im Abschnitt "Nachschlagevorgänge mit mehreren Tabellen".
Dieser Fehler tritt auf, wenn Batchvorgänge ausgeführt werden.
Beim Senden einer $batch
Anforderung wird die folgende Fehlermeldung angezeigt.
Antwort
HTTP/1.1 400 Bad Request
--batchresponse_5bd81edb-2ef9-4269-85c3-4623981e6c6e
Content-Type: application/http
Content-Transfer-Encoding: binary
HTTP/1.1 400 Bad Request
REQ_ID: 4c8c75eb-10bf-47f9-9998-c119146d511f
Content-Type: application/json; odata.metadata=minimal
OData-Version: 4.0
{"error":{"code":"0x80048d19","message":"Error identified in Payload provided by the user for Entity :'accounts',
For more information on this error please follow this help link https://go.microsoft.com/fwlink/?linkid=2195293
----> InnerException : System.ArgumentException: Stream was not readable.\r\n
at System.IO.StreamReader..ctor(Stream stream, Encoding encoding, Boolean detectEncodingFromByteOrderMarks, Int32 bufferSize, Boolean leaveOpen)\r\n
at System.IO.StreamReader..ctor(Stream stream, Encoding encoding)\r\n
at Microsoft.OData.JsonLight.ODataJsonLightInputContext.CreateTextReader(Stream messageStream, Encoding encoding)\r\n
at Microsoft.OData.JsonLight.ODataJsonLightInputContext..ctor(ODataMessageInfo messageInfo, ODataMessageReaderSettings messageReaderSettings)\r\n
at Microsoft.OData.Json.ODataJsonFormat.CreateInputContext(ODataMessageInfo messageInfo, ODataMessageReaderSettings messageReaderSettings)\r\n
at Microsoft.OData.ODataMessageReader.ReadFromInput[T](Func`2 readFunc, ODataPayloadKind[] payloadKinds)\r\n
at System.Web.OData.Formatter.Deserialization.ODataResourceDeserializer.Read(ODataMessageReader messageReader, Type type, ODataDeserializerContext readContext)\r\n
at System.Web.OData.Formatter.ODataMediaTypeFormatter.ReadFromStream(Type type, Stream readStream, HttpContent content, IFormatterLogger formatterLogger)."}}
--batchresponse_5bd81edb-2ef9-4269-85c3-4623981e6c6e--
Die Verwendung anderer Zeilenabschluss als CRLF im Batchanforderungstext verursacht diesen Deserialisierungsfehler.
Abhängig vom verwendeten Editor können diese nicht druckbaren Zeichen schwer zu erkennen sein. Wenn Sie Editor++ verwenden, können Sie die Option "Alle Zeichen anzeigen" verwenden, um diese Zeichen sichtbar zu machen.
Diese Nutzlast funktioniert:
Diese Nutzlast schlägt fehl, da die letzte Zeile nicht mit CRLF
.
In diesem Fall reicht nur das Hinzufügen eines Wagenrücklaufs am Ende der letzten Zeile aus, um es erfolgreich zu machen.
Stellen Sie sicher, dass alle Zeilenabschluss im $batch
Anforderungstext enthalten sindCRLF
. Wenn Sie dies nicht verwenden CRLF
können, fügen Sie am Ende des Batchanforderungstexts zwei nicht ZeilenabschlussCRLF
hinzu, um diesen Deserialisierungsfehler zu beheben. Weitere Informationen finden Sie unter Batchanforderungen.
Der Fehler tritt auf, wenn die Dataverse-Web-API eine Anforderung mit einem ungültigen odata.include-annotations
Wert im Prefer
Anforderungsheaderwert empfängt. Dieses Problem tritt auf, wenn die Anforderung mithilfe der POST
Methoden , PATCH
, , PUT
oder GET
HTTP mit einem Prefer
Anforderungsheader gesendet wird, der einen ungültigen oder falsch formatierten Wert enthält.
Im folgenden Beispiel enthält der odata.include-annotations
Wert fälschlicherweise umgekehrte Schrägstriche (\), um die Anführungszeichen zu escapen.
Anfordern
POST [Organization URI]/api/data/v9.2/contacts HTTP/1.1
Prefer: odata.include-annotations=\"*\"
{
"firstname":"test",
"lastname":"contact"
}
Antwort
HTTP/1.1 400 Bad Request
{
"Message": "Error identified on the 'odata.include-annotations' value inside the 'Prefer' header.
Refer to the following link for more details: https://go.microsoft.com/fwlink/?linkid=2300109.
See exception message for more details 'An error occurred when parsing the HTTP header 'Prefer'. The header value 'odata.include-annotations=\\\"*\\\"' is incorrect at position '26' because the escape character '\\' is not inside a quoted-string.'.",
"ErrorCode": "0x80097303"
}
Um einen sichereren Dienst bereitzustellen, wird ein Problem behoben, bei dem ungültige Prefer
Anforderungsheaderwerte ohne Überprüfung verarbeitet werden, wenn die POST
Methoden , PATCH
oder PUT
HTTP-Methoden verwendet werden. Jetzt wird die Überprüfung für alle HTTP-Methoden erzwungen. Dieser Fehler tritt ab Der Dataverse-Version 9.2.2412.3 auf, der die Bereitstellung im Januar 2025 beginnt und bis Februar 2025 für alle Regionen bereitgestellt wird.
Lesen Sie die Anleitungen zum ordnungsgemäßen Festlegen von Prefer-Headern in der Dataverse-Web-API.
Training
Lernpfad
Use advance techniques in canvas apps to perform custom updates and optimization - Training
Use advance techniques in canvas apps to perform custom updates and optimization