使用WSE 2.0将ASP.NET 1.1 Web服务升级到.NET 3.5

使用WSE 2.0将ASP.NET 1.1 Web服务升级到.NET 3.5,.net,web-services,.net,Web Services,我们最近使用WSE2.0将包含web服务的应用程序升级到.NET3.5。当我们在VisualStudio2008中转换该项目时,它没有提到任何关于删除和/或修改WSE2.0名称空间的内容。下面是.NET1.1项目中web服务的基本架构 Web服务源代码: [WebService(Namespace="http://tempuri.org")] public class MyWebService : BaseWebService { //Do some stuff } using Mic

我们最近使用WSE2.0将包含web服务的应用程序升级到.NET3.5。当我们在VisualStudio2008中转换该项目时,它没有提到任何关于删除和/或修改WSE2.0名称空间的内容。下面是.NET1.1项目中web服务的基本架构

Web服务源代码:

[WebService(Namespace="http://tempuri.org")]
public class MyWebService : BaseWebService
{
    //Do some stuff
}
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.");
        }
    }
}
BaseWebService源代码:

[WebService(Namespace="http://tempuri.org")]
public class MyWebService : BaseWebService
{
    //Do some stuff
}
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.");
        }
    }
}
在转换过程中,BaseWebService.cs类被从项目中排除,WSE2.0命名空间被从类中删除

是否有其他人在尝试使用WSE将web服务从.NET 1.1升级到.NET 3.5时遇到任何问题

这与我之前提出的关于使用升级web服务的客户端的问题有关:


我发现的最大问题是Javascript硬编码了一些服务器控件的名称。在带有母版页的ASP.NET 2.0中,id的位置更改为ctrl$\U gridview1\U checkbox1。。。 因此,需要使用控件的ClientID属性从服务器端更改和生成任何硬编码引用


我还发现.NET2.0对未捕获的异常更为严格,在升级并更改了最低代码以便成功编译之后,我们开始出现大量崩溃和未处理的异常。我们一开始的代码有很多错误,编写得很糟糕,但有趣的是.net 1.1从未抱怨或愉快地接受错误…

我发现的最大问题是Javascript硬编码了一些服务器控件的名称。在带有母版页的ASP.NET 2.0中,id的位置更改为ctrl$\U gridview1\U checkbox1。。。 因此,需要使用控件的ClientID属性从服务器端更改和生成任何硬编码引用

我还发现.NET2.0对未捕获的异常更为严格,在升级并更改了最低代码以便成功编译之后,我们开始出现大量崩溃和未处理的异常。我们一开始的代码有很多错误,编写得很糟糕,但有趣的是.net 1.1从未抱怨或愉快地接受错误…

正如我对原始问题的回答:

WCF(.net 3.5)据说与WSE3(.net 2.0+)兼容,但与WSE2(.net 1.1+)不兼容

因此,如果您不想更改客户端,但希望它与服务兼容,可以保留旧的服务源代码,并在VS2008解决方案下保留对WSE2程序集的引用。因此,客户端和服务都是兼容的。

正如我对原始问题的回答:

WCF(.net 3.5)据说与WSE3(.net 2.0+)兼容,但与WSE2(.net 1.1+)不兼容


因此,如果您不想更改客户端,但希望它与服务兼容,可以保留旧的服务源代码,并在VS2008解决方案下保留对WSE2程序集的引用。因此,客户端和服务都将兼容。

以下是web.config中服务的设置:

<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>  

以下是web.config中服务的设置:

<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>  


因此,对WSE 2.0的引用必须在客户端和服务中,或仅在服务中?客户端代理应继承Microsoft.Web.Services2.WebServicesClientProtocol。服务实现应使用Microsoft.Web.Services2命名空间和程序集。Web.config应该正确设置system.Web/webServices/soapextensiontypes.Done。我已发布升级的WebService的SoapExtensionTypes设置,因此对WSE 2.0的引用必须位于客户端和服务中,或仅位于服务中?客户端代理应继承Microsoft.Web.Services2.WebServicesClientProtocol。服务实现应使用Microsoft.Web.Services2命名空间和程序集。Web.config应该正确设置system.Web/webServices/soapextensiontypes.Done。我已经发布了升级Web服务的SOAPExtensionTypes设置