2008-10-09 169 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>