2014-04-14 28 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

相关问题