2010-12-07 43 views
-2

J'ai eu un service Web écrit en .NET 2.0 qui expose certaines méthodes Web. Ce service est consommé par une application client écrite avec .NET 1.1 il y a quelques années. L'application cliente ne peut pas être convertie à ce stade.Service Web lançant beaucoup de «Une erreur inattendue s'est produite sur une réception» lorsqu'il est consommé après avoir changé de structure

J'ai récemment "mis à niveau" le projet de service Web vers .NET 4.0 car j'ai commencé à utiliser VS2010 et je voulais utiliser les nouvelles fonctionnalités. Comme le client ne peut pas être mis à niveau, je ne peux pas convertir le service Web en WCF, donc le code lui-même n'est pas modifié du tout. Même service Web, mêmes méthodes Web.

En général, cela fonctionne très bien, et au début, je n'ai pas vu de problème. Cependant, mon système de journalisation affiche une augmentation énorme des erreurs "Une erreur inattendue est survenue lors d'une réception" qui se produit lorsque le client consomme le service Web - si par exemple il était une fois par semaine, il lance maintenant ces erreurs 10-20 fois par jour.

Environ 50 clients effectuent des milliers de demandes par jour au total.

Cela ne se produit pas dans une méthode spécifique et ne peut pas être reproduit à une action spécifique faite par un client.

Une partie de la trace de pile:

à System.Web.Services.Protocols.WebClientProtocol.GetWebResponse (WebRequest demande)
à System.Web.Services.Protocols.HttpWebClientProtocol.GetWebResponse (WebRequest demande)
à System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke (String methodName, objet [] paramètres)

Est-ce que quelqu'un a une idée de ce qui pourrait causer cette augmentation? Un moyen de le réduire sans convertir le tout à la WCF? À la réflexion, cela peut aussi être dû à l'installation du .NET 4.0 sur le serveur, donc je ne suis pas sûr que le retour de la DLL du service web à l'ancienne version sera bon.

Le message d'erreur complet est en fait:

La connexion sous-jacente a été fermée:
Une erreur inattendue est survenue sur un reçoivent

Répondre

2

Voici une liste des changements pour ASP.NET casser 4: http://www.asp.net/learn/whitepapers/aspnet4/breaking-changes, et aussi ici: .NET Framework 4 Migration Issues

La seule pièce intéressante que je vois là-bas serait l'ASP Chapitre .NET Request Validation. Maintenant, la validation s'applique également aux services Web.

Je voudrais essayer le requestValidationMode="2.0".

Sinon, il y a une liste complète des idées ici: kb915599 mais ce n'est pas lié aux changements entre .NET 4 et .NET 2.

+0

j'ai augmenté le délai global sur le serveur et il réduit le nombre d'erreurs. Merci! –

0

Quel point final de liaison que vous utilisez pour le .NET 4 un service? Le wshttpbinding par défaut n'est pas supporté par les versions précédentes sur .net, vous devez utiliser le BasicHttpBinding.

Heres quelques conseils: http://msdn.microsoft.com/en-us/library/ms731134.aspx

+0

Aucun critère d'effet - ce n'est pas WCF .. –