【问题标题】:Web Application behaviour different when publishing in Azure在 Azure 中发布时 Web 应用程序行为不同
【发布时间】:2014-04-14 08:08:12
【问题描述】:

我创建了一个 Web 应用程序,我在其中调用 c# 方法。在 c# 方法中,我返回一个包含 1、2、3 之类的值的对象。当我在 localhost 中运行应用程序时,我得到了该对象的确切值。但是,当我在 AZURE 中发布此应用程序时,没有进行任何更改。我没有得到像 1、2、3 这样的值,而是得到值 System.Object。 我不明白这种奇怪的行为。请帮助我。 这是我的代码:

$('#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;
}

【问题讨论】:

  • 你总是不能吞下你的异常来看看你的查询是否有问题catch (Exception ex) { }添加一些日志记录或远程调试它。
  • 你考虑过使用实体框架吗?msdn.microsoft.com/en-us/data/ee712907.aspx

标签: c# jquery azure


【解决方案1】:

ExecuteScalar 返回一个对象。我已经看到了您所指的这个问题 - 事实上,在寻找 Azure 和 ExecuteScalar 问题时遇到了您的问题。 ExecuteScalar 被记录为返回返回对象的第一行中的第一列。

仅供参考,我们使用实体框架,相关数据库位于本地和云端。在本地,我的插入工作使用 ExecuteScalar 查找,但返回的对象是无用的。尝试强制转换会引发 InvalidCast 异常。

我已经开始用 ExecuteNonQuery 替换 ExecuteScalar,到目前为止效果很好。

这是我发现对解决基于 Azure 的数据库访问问题最有帮助的文章……

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-06-23
    • 2018-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-09
    • 1970-01-01
    • 2020-01-25
    相关资源
    最近更新 更多