一条关于Request is not available in this context的错误分析

yanghuabober 2016-01-26 02:33:57
情况是这样的:我做了一个医生用的查询的小程序,界面如下图:

前台通过Ajax去请求后台数据,发布到IIS6后,在点击提取数据时,ajax抛出如下错误:

但是程序在VS2010中运行调试都是成功的,发布到IIS6以后就不行了。
发布后的getUser()和getDept()都是通过上层框架(frame)的cookies获取的,出错后,一直没找到原因,请各位帮忙分析一下,谢谢!
贴上ajax代码
$(function () {
$("#btnSubmit").click(function () {
var sdata = $("#tb_sdate_1").val();
var edate = $("#tb_edate_1").val();
var vall = $("#Hidden1").val();
$.ajax({
type: "POST",
url: "index.aspx/sendValue",
data: "{'va':'" + vall + "','sdate':'" + sdata + "','edate':'" + edate + "'}",
beforeSend: function () { $("#hidiv").show();},
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (data) {
var vstr = data.d
var strarr = new Array();
if (vstr != "") {
if (vstr.indexOf(",") > 0) {
strarr = vstr.split(",");
}
else {
strarr = new Array(vstr);
}
}
for (var t = 0; t < strarr.length; t++) {
var yu = strarr[t].split(":");
$('#' + yu[0]).html(yu[1]);
}
$("#hidiv").hide();
$("#head").width($(".td_Item:gt(0)").width());
},
error: function (XMLHttpRequest) {
alert(XMLHttpRequest.responseText);
}
});
return false;
});
}
);


后台sendvalue代码
[WebMethod]
public static string sendValue(string va, string sdate, string edate)
{
string disp = va;
string display = disp.LastIndexOf(",") != -1 ? disp.Substring(0, disp.LastIndexOf(",")) : "";
string[] strarr = new string[] { };
string vlues = "";
if (display != "")
{
if (display.IndexOf(",") != -1)
{
strarr = display.Split(',');
}
else
{
strarr = new string[] { display };
}
}
for (int i = 0; i < strarr.Length; i++)
{
vlues += strarr[i] + ":" + getDataByItem(strarr[i], sdate, edate, getDept()) + ",";
}
string values = vlues.IndexOf(",") != -1 ? vlues.Substring(0, vlues.LastIndexOf(",")) : vlues;
return values;
}


getDataByItem代码:
 public static string getDataByItem(string item_code, string sdate, string edate, string dept)
{
string sql = "select querysql from kssrfx where item_code='" + item_code + "'";
DataTable dt = DataOper.getPlatData(sql).Tables[0];
string datasql = dt.Rows[0][0].ToString();

OracleConnection dconn = new OracleConnection(conn);
OracleCommand cmd = new OracleCommand();
try
{
dconn.Open();
cmd.Connection = dconn;
cmd.CommandText = datasql;
OracleParameter op1 = new OracleParameter();
op1.ParameterName = ":sdate";
op1.Value = sdate;
OracleParameter op2 = new OracleParameter();
op2.ParameterName = ":edate";
op2.Value = edate;
OracleParameter op3 = new OracleParameter();
op3.ParameterName = ":dept";
op3.Value = dept;
cmd.Parameters.Add(op1);
cmd.Parameters.Add(op2);
cmd.Parameters.Add(op3);

OracleDataAdapter oda = new OracleDataAdapter();
oda.SelectCommand = cmd;
DataSet ds = new DataSet();
oda.Fill(ds);
dconn.Close();
DataTable dt1 = ds.Tables[0];
if (dt1.Rows.Count > 0)
{
string backhtml = "<table class='autot' cellspacing='0' cellpadding='0'><tr>";
for (int k = 0; k < dt1.Columns.Count; k++)
{
backhtml += "<td>" + dt1.Columns[k].ColumnName + "</td>";
}
backhtml += "</tr>";
for (int i = 0; i < dt1.Rows.Count; i++)
{
backhtml += "<tr>";
for (int j = 0; j < dt1.Columns.Count; j++)
{
backhtml += "<td>" + dt1.Rows[i][j].ToString() + "</td>";
}
backhtml += "</tr>";
}
backhtml += "</table>";
return backhtml;
}
else
return "没有数据!";

}
catch (Exception r)
{
return "没有数据!";
}
}




...全文
448 5 打赏 收藏 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
正怒月神 版主 2016-01-27
  • 打赏
  • 举报
回复
换一台机器发布一下看看,或者本地iis发布看看会不会出问题。 这个和很多情况都有关系,.net framework版本,是否经典模式还是集成模式之类的。你先在本地发布iis看看吧
Justin-Liu 2016-01-27
  • 打赏
  • 举报
回复
有可能不是你代码的问题而是生产环境的配置问题
Justin-Liu 2016-01-27
  • 打赏
  • 举报
回复
打LOG出来
  • 打赏
  • 举报
回复
你调试了,看后台哪个方法报错
yanghuabober 2016-01-26
  • 打赏
  • 举报
回复
自己先顶一个!

62,270

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧