2008-10-09 128 views
1

我们最近使用WSE 2.0将包含Web服务的应用程序升级到.NET 3.5。当我们在Visual Studio 2008中转换项目时,并没有提到有关删除和/或修改WSE 2.0命名空间的任何信息。这是.NET 1.1项目中Web服务的基本体系结构。使用WSE 2.0升级到.NET 3.5的ASP.NET 1.1 Web服务

Web服务的源代码:

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

BaseWebService源代码:

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命名空间从删除班上。

有没有其他人遇到任何问题,试图从.NET 1.1使用WSE升级到.NET 3.5的Web服务?

这与前面的问题我已经关于客户机消费升级的Web服务:

Stack Overflow Question

回答

0

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

我还发现.NET 2.0对未捕获的异常更严格,升级后只是更改最小代码,以便我们获得成功的编译,我们开始得到大量崩溃和未处理的异常。我们有非常错误和写得不好的代码开始的,但仅仅是有趣的是,.NET 1.1从不抱怨或吞食愉快的错误...

1

正如我answered原来的问题:

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

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

+0

所以参考WSE 2.0必须在,或者只是在服务客户端和服务? – 2008-10-14 15:39:20

0

下面是在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>