2008-10-09 8 views
1

Nous avons récemment mis à niveau une application contenant des services Web utilisant WSE 2.0 vers .NET 3.5. Lorsque nous avons converti le projet dans Visual Studio 2008, il ne mentionne rien sur la suppression et/ou la modification des espaces de noms WSE 2.0. Voici l'architecture de base des services Web dans le projet .NET 1.1.Mise à niveau d'un service Web ASP.NET 1.1 à l'aide de WSE 2.0 vers .NET 3.5

Web Service Code Source:

[WebService(Namespace="http://tempuri.org")] 
public class MyWebService : BaseWebService 
{ 
    //Do some stuff 
} 

BaseWebService Source Code:

using Microsoft.Web.Services2; 
using Microsoft.Web.Services2.Security; 
using Microsoft.Web.Services2.Security.Tokens; 

namespace MyNameSpace 
{ 
    public class BaseWebService : System.Web.Services.WebService 
    { 
     public BaseWebService() 
     { 
      if(RequestSoapContext.Current == null) 
       throw new ApplicationExcpetion("Only SOAP requests are permitted."); 
     } 
    } 
} 

Au cours de la conversion, la classe BaseWebService.cs a été exclu du projet et les espaces de noms ont été retirés de WSE2.0 la classe.

Quelqu'un d'autre rencontre-t-il des problèmes pour essayer de mettre à niveau un service Web à partir de .NET 1.1 en utilisant WSE vers .NET 3.5?

Ceci est lié à la question précédente, je l'avais au sujet d'un client consommant le service Web amélioré:

Stack Overflow Question

Répondre

0

le plus gros problème que j'ai trouvé est en Javascript qui avait codait le nom de certains de mes les contrôles du serveur. dans ASP.NET 2.0 avec des pages maîtres, l'ID a été modifié en quelque chose comme ctrl $ _gridview1_checkbox1 ... Par conséquent, toutes les références codées en dur devaient être modifiées et générées du côté serveur à l'aide de la propriété ClientID du contrôle. J'ai également constaté que .NET 2.0 était plus strict sur les exceptions non interceptées, après la mise à niveau et juste en changeant le code minimum afin que nous obtenions une compilation réussie, nous avons commencé à avoir beaucoup de plantages et d'exceptions non gérées. Nous avions très buggy et un code mal écrit pour commencer, mais est tout simplement intéressant que .net 1.1 ne se plaignait jamais ou avalé les erreurs heureusement ...

1

Comme je l'ai answered à la question initiale:

WCF (.net 3.5) est dit compatible avec WSE3 (.net 2.0+), mais pas avec WSE2 (.net 1.1+). Par conséquent, si vous ne souhaitez pas modifier le client, mais que vous souhaitez qu'il soit compatible avec le service, vous pouvez laisser l'ancien code source du service et conserver les références aux assemblys WSE2 sous la solution VS2008. Ainsi, le client et le service seront compatibles.

+0

Ainsi, la référence à la WSE 2.0 doivent être dans le client et le service, ou tout simplement au service? –

+0

Le proxy client doit hériter de Microsoft.Web.Services2.WebServicesClientProtocol. L'implémentation du service doit utiliser les espaces de noms et les assemblys Microsoft.Web.Services2. Web.config doit avoir des fichiers system.web/webServices/soapExtentionTypes correctement configurés. – DreamSonic

+0

Regardez ma dernière réponse pour les paramètres de configuration ... –

0

Voici les paramètres du web.config pour le service:

<system.web> 
    <webServices> 
     <soapExtensionTypes> 
      <add type="Microsoft.Web.Services2.WebServicesExtension, Microsoft.Web.Services2, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" priority="1" group="0" /> 
      <!--<add type="Microsoft.Web.Services2.Configuration.WebServicesConfiguration, Microsoft.Web.Services2, Version=2.0.3.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>--> 
     </soapExtensionTypes> 
    </webServices> 
</system.web> 
Questions connexes