C# 在Azure中发布时Web应用程序的行为不同
我创建了一个web应用程序,在其中我调用c#method。在c#方法中,我返回一个对象,该对象包含1、2、3这样的值。当我在本地主机上运行应用程序时,我得到了对象的确切值。但是,当我在AZURE中发布此应用程序而不做任何更改时。我没有得到像1,2,3这样的值,而是得到值System.Object。 我不理解这种奇怪的行为。请帮助我。 这是我的密码:C# 在Azure中发布时Web应用程序的行为不同,c#,jquery,azure,C#,Jquery,Azure,我创建了一个web应用程序,在其中我调用c#method。在c#方法中,我返回一个对象,该对象包含1、2、3这样的值。当我在本地主机上运行应用程序时,我得到了对象的确切值。但是,当我在AZURE中发布此应用程序而不做任何更改时。我没有得到像1,2,3这样的值,而是得到值System.Object。 我不理解这种奇怪的行为。请帮助我。 这是我的密码: $('#btn').click(function(){ PageMethods.SaveNDig(obj, OnComplete); });
$('#btn').click(function(){
PageMethods.SaveNDig(obj, OnComplete);
});
C#方法:
ExecuteScalar返回一个对象。我已经看到了您提到的这个问题——事实上,我遇到了您的问题,正在寻找Azure和ExecuteScalar的问题。ExecuteScalar被记录为返回返回对象第一行中的第一列 仅供参考,我们使用实体框架,所讨论的数据库驻留在本地和云中。在本地,我的inserts使用ExecuteScalar查找,但返回的对象没有用处。试图强制转换它会引发InvalidCast异常 我已经开始用ExecuteOnQuery替换ExecuteScalar,到目前为止效果很好 下面是一篇文章,我发现这篇文章对解决我基于Azure的DB访问问题最有帮助
您不能总是吞下异常来查看查询是否有问题
catch(Exception ex){}
添加一些日志记录或远程调试它。您考虑过使用实体框架吗?
[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;
}