2011-07-22 190 views
0

我剛剛將我們的Web應用程序數據庫從sybase sql任意位置11遷移到SQL Server 2008 R2 express,當我嘗試編譯與SQL Server接口的WCF服務時,我出現了多個錯誤,其中最明顯的是下面的錯誤當我們的數據庫是sybase時,我從來沒有看到過這個問題。無效的參數錯誤

Error 5 The best overloaded method match for 
'GlobeMailServiceLibrary.GMDatabaseService.KioskDataSetTableAdapters.Kiosk.CreateFolder(int?, 
string, bool?, bool?, ref int?)' has some invalid arguments 
C:\WebMailDev\Code\GlobeMailServiceLibrary\GMDatabaseService\GMDatabaseService.40 
13 GlobeMailServiceLibrary 

這是從哪兒存儲過程調用和執行WCF服務方法: -

private int CreateFolder(int iUser, string strFolder, bool bUserCreate, bool bOutgoing) 
    { 
     int iFolder; 
     DBEncoder.EncodeObject(ref strFolder); 
     KioskAdapter.CreateFolder(iUser, strFolder, bUserCreate, bOutgoing, out 
            iFolder);    
     return iFolder; 
    } 

這裏是存儲過程定義: -

create procedure dbo.CreateFolder(@v_userID integer,@v_foldername varchar(512),@v_IsUserDefined 
            bit,@v_IsOutGoing bit,@v_folderID integer Output) 
    AS 
    begin 
     --set option MAX_STATEMENT_COUNT = 0; 
     --set option MAX_CURSOR_COUNT = 0; 
     insert into GCK_Folder(Foldername,IsUserDefined,IsOutGoing,UserID) values( 
           @v_foldername,@v_IsUserDefined,@v_IsOutGoing,@v_userID) ; 
     set @v_folderID = @@IDENTITY 
end 
go 

我註釋掉設置OPTION MAX_STATEMENT_COUUNT和MAX_CURSON_COUNT,因爲我不知道SQL Server 2008 R2 express中Sybase的等效命令。

+4

嗯...例外是告訴你,問題出現在'CreateUser'中,所以也許這就是你應該開始尋找的地方。換句話說,我不認爲'CreateFolder'是這裏的問題。 –

+0

這是一個純粹的C#問題,與WCF,SQL Server或ASP.NET無關。 –

+4

您需要將代碼發佈到'CreateUser'。 – doctorless

回答

0

您遇到的問題是GlobeMailServiceLibrary.GMDatabaseService.KioskDataSetTableAdapters.Kiosk.CreateFolder期望ref int?作爲最後一個參數,而您傳遞的是out參數,而不是所需的簽名。