6
votes

Résultats inattendus avec la pagination après le déploiement de l'application sur IIS (MVC3, EF 4.3)

Je suis actuellement déployant sur un site Web MVC 3 qui utilise l'entité Framework 4.3 pour l'accès à la base de données.

L'application fonctionne comme prévu dans le serveur de développement Visual Studio, mais une fois déployée sur le serveur distant, la requête réagit de manière inattendue

Il devrait afficher une liste triée et des pages via les données triées

J'ai essayé de redémarrer le serveur Web et la machine de serveur physique pour vous assurer que le cache est parti et même essayé d'utiliser une propreté. Site IIS sur le serveur distant avec le même résultat.

[EDIT]: J'ai également fait une suppression complète et republisez-la à un site propre aussi bien

sur la machine de développement

machine de développement

sur le serveur distant

Entrez la description de l'image ici

le code que j'utilise pour générer Les tables:

contrôleur xxx


16 commentaires

Connectez-vous à la même base de données?


oui c'est la même base de données une fois sur le serveur, il décède la commande que c'est comme si elle tire les enregistrements pris avec les commandes en commandant d'abord


Vous êtes commandé par ID Pouvez-vous vérifier si les identifiants sont identiques sur le serveur et la machine de développement?


J'utilise la base de données de production pour le développement, les tests et le déploiement afin que les mêmes données soient présentes pour les configurations et le même code sont présentes pour les deux (pas utiliser les directives du compilateur, etc.)


Votre serveur de production dispose-t-il de plusieurs fichiers attribués à TEMPDB et SQL Server génère un plan d'exécution parallèle pour une certaine insertion, ce qui entraîne des lignes insérées avec des commandes différentes et des valeurs d'identité différentes?


Il existe une application séparée qui gère l'insertion des données Il s'agit uniquement d'une application de rapport et cette application utilise Oracle pour la base de données qu'il semble que je n'ai pas oublié de mentionner dans l'application originale L'application MVC ne fait rien en parallèle si vous comprenez correctement votre question. et il y a 3 mécanismes externes séparés insérant des données à la base de données, mais je ne vois pas comment cela explique les données étant en ordre sur le serveur de développement, mais en dehors de l'ordre sur le serveur de production


Quel est le type de données de l'identifiant? Les machines sont-elles identiques dans leur architecture (x86 vs x64, etc.)? L'application se comporte-t-elle comme prévu lors de l'utilisation de IIS sur la machine locale plutôt que de Cassini?


Le type de données est une chaîne mal essayez-la dans IIS sur ma machine locale et repose


Il apparaît comme si l'ensemble de la production est commandé, au moins à partir des données disponibles dans le tir à l'écran. L'ID de point d'échantillon BE2 existe-t-il du tout dans les données de la pagie lorsque vous exécutez ceci en production?


Les données de définition de la production sont toutes là-bas, il ne trie pas dans toutes les pages que nous avons effectué un changement de tri immédiatement avant le déploiement de notre serveur de production, ma première hypothèse est la mise en cache des anciens assemblys sur le serveur et IIS / MVC ne les ramassant pas im en attente actuellement sur une maintenance planifiée cet après-midi pour voir si cela le corrige


Voyons le code source pour la vue.


Aussi pourquoi ne pas faire une session de profileur SQL?


Sous quel scénario serait le paramètre "Page" "0"?


sa valeur de débogage pour désactiver la pagination et montrer tous les résultats


Cela ne semble pas être un problème de code, plus comme un problème de fournisseur. Utilisez-vous le même fournisseur EF sur les deux environnements?


la question de la fermeture telle que je me suis montée en raison de coupes budgétaires informatiques = (


4 Réponses :


0
votes

Assurez-vous que la version ASP.NET MVC est la même sur les deux machines (dev / prod). Autres personnes Vous avez des problèmes à cause de cela.

Fondamentalement, il est arrivé qu'une version plus récente était du GAC du serveur de production.


1 commentaires

MVC 3 est un bac déployé avec l'application et n'a jamais utilisé MVC 2 dans le passé



0
votes

Une solution simple est en train de mettre en œuvre une sorte de journalisation et d'écrire la sortie produite à des niveaux intermédiaires à un fichier journal.

Si vous utilisez VS Ultimate Edition, vous pouvez donner une photo à l'aide de IntelliTrace < / a>. (Je n'ai pas utilisé cet outil bien que j'en ai entendu parler)


1 commentaires

Malheureusement, nous n'avons pas d'ultime ultime au travail que je l'ai seulement à la maison = (



0
votes
spList = db.SamplePoints.Where(e=> 
                        points.Any(p=> e.Id.StartsWith(p))
                     && e.Id.ToLower().Trim().StartsWith(filter.ToLower()))
            .OrderBy(o => o.Id);
From your code above, Is the e.ID the first column in your image above? if not, is e.Id the primary key and the IdentitySeed set to true? If so, this is your problem, since it is auto generated, this ID will be different in production database and the development database which causes the display differently.

1 commentaires

Q1: Je pense que j'ai mentionné cela plusieurs fois, mais il n'y a que 1 base de données il n'y a pas de développement dB Il n'y a pas de données écrites dans la base de données par cette application. Q2: ID est la clé principale du tableau et cette graine d'identité de base de données Oracle est aussi loin que je connais une option MS SQL Server toutes les données sont conservées par une autre application de serveur.



0
votes

sont les deux serveurs ont les mêmes paramètres régionaux?

Vous utilisez string.tolover et startswith qui effectuera la transformation basée sur la culture actuelle.

Vous devez utiliser des versions surchargées de ces méthodes avec une culture invariante.


0 commentaires