ListData.svc renvoie une erreur de serveur interne 500 - «Erreur de dépassement arithmétique…»

sharepoint.stackexchange https://sharepoint.stackexchange.com/questions/105331

  •  29-09-2020
  •  | 
  •  

Question

J'ai des problèmes avec certaines instances de liste déployées par CAML.Après le déploiement des listes, elles n'apparaissent pas dans SharePoint Designer.De même, lorsque vous tentez de vous connecter à (presque tous), une erreur de serveur interne 500 ou une réponse 404 non trouvée est renvoyée au navigateur.

Cela se produit lorsque vous testez simplement les listes (vides ou remplies) en utilisant /_vti_bin/listdata.svc/{listname}.

Le contenu des schémas de liste semble assez simple :

Une recherche -

<Field ID="{Guid}"
    Name="TheName"
    DisplayName="TheName"
    StaticName="TheName"
    Type="Lookup"
    List="Lists/TheParentList"
    ShowField="Title"
    Required="TRUE"
    Indexed="TRUE"
    RelationshipDeleteBehavior="Restrict"/>

De nombreux champs de texte (rien d'extraordinaire), comme -

<Field ID="{GUID}"
    Name="TheName"
    DisplayName="The Name"
    StaticName="TheName"
    Type="Text"/>

Un seul champ DateTime -

<Field ID="{GUID}"
    Name="TheName"
    DisplayName="The Name"
    StaticName="TheName"
    Type="DateTime"
    StorageTZ="UTC"/>

Et un seul champ Utilisateur -

<Field ID="{GUID}"
    Name="TheName"
    DisplayName="The Name"
    StaticName="TheName"
    Type="User"
    List="UserInfo"
    UserSelectionMode="0"/>

Très bien, alors c'est là que les choses deviennent bizarres.je peux tester ListData.svc avant le déploiement et cela fonctionne comme prévu.Si je déploie le wsp contenant les schémas de liste, ce comportement commence à être observé, même si toutes les listes se chargent correctement dans le navigateur et que tous les formulaires fonctionnent.Si je supprime ensuite les champs Recherche, DateHeure et Utilisateur dans une liste ET SUPPRIMER TOUTES LES AUTRES LISTES en tentant de déterminer la source par processus d'élimination, je rencontre toujours ce problème.Donc, pour être clair, à ce stade, il n'y a rien de plus qu'une seule liste avec un tas de champs de texte, et je continue de recevoir de mauvaises réponses avec ListData.svc.

Dans les journaux ULS, une erreur est systématiquement générée chaque fois que j'essaie d'accéder au service REST :

System.Data.SqlClient.SqlException: Arithmetic overflow error converting expression to data type int.
at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection)
at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj)
at System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj)
at System.Data.SqlClient.SqlDataReader.HasMoreRows()
at System.Data.SqlClient.SqlDataReader.ReadInternal(Boolean setTimeout)
at Microsoft.SharePoint.SPSqlClient.ExecuteQueryInternal(Boolean retryfordeadlock)
at Microsoft.SharePoint.SPSqlClient.ExecuteQuery(Boolean retryfordeadlock)

Très bien, alors qu'est-ce qu'il essaie de lancer en tant qu'int ?

Quelqu'un a-t-il une idée de ce que cela pourrait être ?J'ai parcouru les coins les plus éloignés d'Internet pour essayer de comprendre cela.

En attendant, je vais poursuivre le "processus d'élimination".

Était-ce utile?

La solution

Et j'ai compris :Le ListTemplate éléments Type la valeur de l'attribut était à l'origine du problème.

Le Documentation États:

Gardez à l’esprit que les produits Microsoft Corporation basés sur SharePoint Foundation, tels que Microsoft SharePoint Server, peuvent définir et définissent des types de listes supplémentaires.De plus, les batteries de serveurs Microsoft SharePoint Foundation dans lesquelles votre solution est déployée peuvent avoir des types de liste personnalisés créés, par exemple en ajoutant un élément CAML ListTemplate (modèle de liste) à une fonctionnalité ou au fichier ONET.xml d'une configuration de définition de site personnalisée.(Ces types de listes personnalisées doivent avoir des valeurs d'ID supérieures à 10 000 pour garantir qu'elles n'entrent pas en conflit avec les nombres qui seront utilisés par Microsoft dans les futures versions de SharePoint Foundation.) Étant donné que ces types de liste n'ont pas de valeurs correspondantes dans cette énumération, vous devez envisager de ne pas utiliser cette énumération comme valeur de paramètre dans vos méthodes personnalisées.Envisagez plutôt d'utiliser des paramètres String ou Int32 qui prennent l'ID du type de liste sous forme de chaîne ou d'entier.

Eh bien, faites juste attention à ne pas dépasser les 10 000.Mes numéros étaient composés de 8 chiffres, avec un préfixe à 6 chiffres puis un compteur numérique (toujours certainement inférieur à celui du C#). Int32.MaxValue ou SQL intla plage supérieure de).Je les ai laissés légèrement au-dessus de 10 000 et le problème s'est résolu de lui-même.Ahh, SharePoint.

Licencié sous: CC-BY-SA avec attribution
Non affilié à sharepoint.stackexchange
scroll top