2014-04-14 27 views
3

我創建了一個在其中調用c#方法的Web應用程序。在c#方法中,我返回一個對象,其中包含一個值,如1,2,3.當我在本地主機中運行應用程序時,我得到該對象的確切值。但是,當我在AZURE中發佈此應用程序時未做任何更改。我沒有得到像1,2,3這樣的值,但是我得到了值System.Object。 我不明白這個奇怪的行爲。請幫助我。 這裏是我的代碼:在Azure中發佈時Web應用程序的行爲有所不同

$('#btn').click(function(){ 
    PageMethods.SaveNDig(obj, OnComplete); 
}); 

C#方法:

[WebMethod] 
public static string SaveNDig(Object obj)//string CourseName, string CourseCategoryURL, string CourseCategoryName, string CourseInfo, string PassPercentage, string TextBooks, string GradingSchemes 
{ 

    object result = database.ExecuteScalar("select userid from EUser where username ='" + username + "'"); 
    return result; 
} 

public static object ExecuteScalar(string query) 
{ 
    object obj = new object(); 
    try 
    { 
     con = InitializeConnection(); 
     cmd = new SqlCommand(query, con); 
     con.Open(); 
     obj = cmd.ExecuteScalar(); 
    } 
    catch (Exception ex) { } 
    finally 
    { 
     if (con.State == System.Data.ConnectionState.Open) 
     { 
      con.Close(); 
     } 
    } 
    return obj != null ? obj : null; 
} 
+0

你總是無法放下你的例外情況,看看是否有與您的查詢'趕上(例外的一個問題ex){}'添加一些日誌或遠程調試它。 – RobH

+0

你有沒有考慮過使用實體框架?http://msdn.microsoft.com/en-us/data/ee712907.aspx –

回答

0

的ExecuteScalar返回一個對象。我已經看到了你指的這個問題 - 事實上,遇到你的問題尋找與Azure和ExecuteScalar問題。記錄ExecuteScalar以返回返回對象第一行中的第一列。僅供參考,我們使用實體框架和DB問題位於本地和雲中。在本地,我的插入工作找到使用ExecuteScalar,但返回的對象是無用的。嘗試投射它會拋出一個InvalidCast異常。

我已經開始用ExecuteNonQuery替換ExecuteScalar,並且迄今爲止工作正常。

這裏是我發現疑難解答Azure的基於數據庫的訪問最有用的文章...

https://www.simple-talk.com/blogs/2012/05/31/3-tips-for-sql-azure-connection-perfection

相關問題