事实证明我正在使用SignalR,在html视图中我向客户提出以下请求:
var myHub = $.connection.myHub;
var direccionWeb = $("#direccionWeb").val().toString();
$.connection.hub.url = direccionWeb + "/signalr";
$.connection.hub.start().done(function () {
myHub.server.broadcastMessageToPrinterReportTicket(global_venta, global_mesa, nombregarzon, idgrupo, grupo);
}).fail(function (error) {
console.error(error);
});
在Hub文件中,我有以下内容:
public void BroadcastMessageToPrinterReportTicket(String global_venta,String global_mesa,String nombregarzon,String idgrupo, String grupo)
{
string namePrinter = group;
DataTable dt = new DataTable();
string sql = "SELECT " +
"cant," +
"det " +
"FROM producto " +
"WHERE venta=@global_venta AND venta>0 AND menu.grupo=@idgrupo AND comandasd.pedido=0";
conexion.conectar();
using (MySqlCommand command = new MySqlCommand(sql, conexion.con))
{
command.Parameters.AddWithValue("@global_venta", global_venta);
command.Parameters.AddWithValue("@idgrupo", idgrupo);
using (MySqlDataAdapter reader = new MySqlDataAdapter(command))
{
using (MySqlDataAdapter sda = new MySqlDataAdapter(command))
{
sda.Fill(dt);
}
}
}
conexion.cerrar();
Clients.All.printReport(datos, ........);
}
包含连接类的文件如下:
public void conectar()
{
try
{
string ip = HttpContext.Current.Session["ip"].ToString();
string db = HttpContext.Current.Session["db"].ToString();
string user = HttpContext.Current.Session["user"].ToString();
string pass = HttpContext.Current.Session["pass"].ToString();
con = new MySqlConnection("server=" + ip + ";user id=" + user + ";password=" + pass + ";database=" + db + ";port=3306;Allow User Variables=true");
con.Open();
}
catch
{
}
}
但是当我尝试向DataTable添加数据时,也就是说,在sda.Fill(dt)所说的行上,出现以下错误:SelectCommand.Connection属性尚未初始化。
奇怪的是,当我使用它时,控制器中声明的功能是相同的,它可以正常工作。我想要的是能够获得一个带有BroadcastMessageToPrinterReportTicket接收的参数的数据表并将其发送给客户端。
如果有人知道如何纠正错误或提供一些帮助,我们将不胜感激。
问候
答案 0 :(得分:2)
SelectCommand.Connection属性尚未初始化
在使用命令之前,需要设置MySqlCommand.Connection
属性。例外是告诉你它尚未设置。
您正在使用设置它的构造函数:
using (MySqlCommand command = new MySqlCommand(sql, conexion.con))
逻辑推理是conexion.con == null
。
我们看到con
中设置了conectar
。但是,该代码周围有try
/ catch
块。因此,必须在分配con
之前抛出(并忽略)异常。
最可能的解释是HttpContext.Current.Session["..."]
值中的一个(或多个)为null
,因此在其上调用.ToString()
会抛出NullReferenceException
。
建议:
Settings
。)