Javascript Asp.Net chart.js 500使用.asmx web方法时出现内部服务器错误
我正在尝试在我的asp webforms应用程序中绘制多系列图表。我使用这个教程 并得到错误。当我尝试在使用本教程的地方绘制饼图时,也遇到了同样的问题 这两次我都犯了同样的错误。在页面加载时,我遇到以下错误:Javascript Asp.Net chart.js 500使用.asmx web方法时出现内部服务器错误,javascript,c#,asp.net,chart.js,ashx,Javascript,C#,Asp.net,Chart.js,Ashx,我正在尝试在我的asp webforms应用程序中绘制多系列图表。我使用这个教程 并得到错误。当我尝试在使用本教程的地方绘制饼图时,也遇到了同样的问题 这两次我都犯了同样的错误。在页面加载时,我遇到以下错误: Chart.asmx/GetChart:1 Failed to load resource: the server responded with a status of 500 (Internal Server Error) 当我改变dropdownlist选择时,我得到了这个错误 jq
Chart.asmx/GetChart:1 Failed to load resource: the server responded with a status of 500 (Internal Server Error)
当我改变dropdownlist选择时,我得到了这个错误
jquery.min.js:2 POST http://localhost:55550/Chart.asmx/GetChart 500 (Internal Server Error)
编辑发布应用程序时也会发生相同的错误。
我有web方法Chart.asmx,该方法中的方法是GetChart。方法的源代码是:
public static List<object> GetChart(string policaID, int zaposlenik)
{
List<object> chartData = new List<object>();
string query = "SELECT DISTINCT DATEPART(YEAR, pocetak) Year FROM Police";
DataTable dtYears = GetData(query);
List<int> labels = new List<int>();
foreach (DataRow row in dtYears.Rows)
{
labels.Add(Convert.ToInt32(row["Year"]));
}
chartData.Add(labels);
query = string.Format("SELECT DATEPART(YEAR, p.pocetak) Year,COUNT(DATEPART(YEAR, p.pocetak)) BrojPolica from Police p RIGHT JOIN Zaposlenici z on p.djelatnik = z.zaposleniID " +
"WHERE p.vrsta_police = " + policaID + " GROUP BY DATEPART(YEAR, p.pocetak)");
List<int> series1 = new List<int>();
DataTable dtPolice = GetData(query);
foreach (DataRow row in dtPolice.Rows)
{
series1.Add(Convert.ToInt32(row["BrojPolica"]));
}
chartData.Add(series1);
query = string.Format("SELECT DATEPART(YEAR, p.pocetak) Year,COUNT(DATEPART(YEAR, p.pocetak)) BrojPolica from Police p RIGHT JOIN Zaposlenici z on p.djelatnik = z.zaposleniID " +
"WHERE p.djelatnik=" + zaposlenik.ToString() + " GROUP BY DATEPART(YEAR, p.pocetak)");
List<int> series2 = new List<int>();
DataTable dtZaposlenik = GetData(query);
foreach (DataRow row in dtZaposlenik.Rows)
{
series2.Add(Convert.ToInt32(row["BrojPolica"]));
}
chartData.Add(series2);
return chartData;
}
publicstaticlist-GetChart(字符串policaID,int-zaposlenik)
{
列表图表数据=新列表();
string query=“从Police中选择不同的日期部分(年份,pocetak)年份”;
数据表DTYERS=GetData(查询);
列表标签=新列表();
foreach(数据行,在dtYears.Rows中)
{
labels.Add(转换为第32行[“年]);
}
添加(标签);
query=string.Format(“选择DATEPART(YEAR,p.pocetak)YEAR,COUNT(DATEPART(YEAR,p.pocetak))BrojPolica从Police p右键连接Zaposlenici z on p.djelatnik=z.zaposleniID”+
“其中p.vrsta_police=“+policaID+”按日期分组(年份,p.pocetak)”;
列表系列1=新列表();
DataTable dtPolice=GetData(查询);
foreach(dtPolice.Rows中的数据行)
{
series1.Add(转换为32行[“BrojPolica”);
}
chartData.Add(系列1);
query=string.Format(“选择DATEPART(YEAR,p.pocetak)YEAR,COUNT(DATEPART(YEAR,p.pocetak))BrojPolica从Police p右键连接Zaposlenici z on p.djelatnik=z.zaposleniID”+
“其中p.djelatnik=“+zaposlenik.ToString()+”按日期分组(年份,p.pocetak)”;
列表系列2=新列表();
数据表dtZaposlenik=GetData(查询);
foreach(dtZaposlenik.Rows中的数据行)
{
series2.Add(转换为32行[“BrojPolica”);
}
chartData.Add(系列2);
返回图表数据;
}
我还有两个下拉列表。一是改变保单类型,二是选择员工。Aspx页面如下所示
Vrsta Police:
<asp:DropDownList ID="ddlVrstaPolice" runat="server"></asp:DropDownList>
Djelatnik:
<asp:DropDownList ID="ddlZaposlenike" runat="server"></asp:DropDownList>
<div id="dvChart">
</div>
<p class="text-center">
Vrsta警察局:
杰拉特尼克:
绘制图表的Java脚本代码为:
$(function () {
LoadChart();
$("[id*=ddlVrstaPolice], [id*=ddlZaposlenike]").bind("change", function () {
LoadChart();
});
});
function LoadChart() {
var vrsta_police = $("[id*=ddlVrstaPolice]").val();
var zaposlenik = $("[id*=ddlZaposlenike]").val();
$.ajax({
type: "POST",
url: '<%=ResolveUrl("~/Chart.asmx/GetChart") %>',
data: "{policaID: '" + vrsta_police + "', zaposlenik: '" + zaposlenik + "'}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (r) {
var labels = r.d[0];
var series1 = r.d[1];
var series2 = r.d[2];
var data = {
labels: r.d[0],
datasets: [
{
label: vrsta_police,
fillColor: "rgba(255, 255, 193, 0.2)",
strokeColor: "#FCD209",
pointColor: "#FF8C00",
data: series1
},
{
label: zaposlenik,
fillColor: "rgba(217, 237, 247, 0.2)",
strokeColor: "#BCE8F1",
pointColor: "#0090CB",
data: series2
}
]
};
$("#dvChart").html("");
var canvas = document.createElement('canvas');
$("#dvChart")[0].appendChild(canvas);
//Fix for IE 8
if ($.browser.msie && $.browser.version == "8.0") {
G_vmlCanvasManager.initElement(canvas);
}
var ctx = canvas.getContext('2d');
ctx.canvas.height = 300;
ctx.canvas.width = 500;
var lineChart = new Chart(ctx).Line(data, {
bezierCurve: false
});
},
failure: function (response) {
alert('There was an error.');
}
});
}
$(函数(){
负荷图();
$(“[id*=ddlVrstaPolice],[id*=ddlZaposlenike]”。绑定(“更改”,函数(){
负荷图();
});
});
函数负载图(){
var vrsta_police=$(“[id*=ddlVrstaPolice]”)。val();
var zaposlenik=$(“[id*=ddlZaposlenike]”)。val();
$.ajax({
类型:“POST”,
url:“”,
数据:“{policaID:'”+vrsta_police+”,zaposlenik:'“+zaposlenik+”}”,
contentType:“应用程序/json;字符集=utf-8”,
数据类型:“json”,
成功:功能(r){
var标签=r.d[0];
var系列1=r.d[1];
var序列2=r.d[2];
风险值数据={
标签:r.d[0],
数据集:[
{
标签:vrsta_警察局,
fillColor:“rgba(255,255,193,0.2)”,
strokeColor:#FCD209“,
pointColor:#FF8C00“,
数据:系列1
},
{
标签:zaposlenik,
fillColor:“rgba(217237247,0.2)”,
strokeColor:#BCE8F1“,
pointColor:#0090CB“,
数据:系列2
}
]
};
$(“#dvChart”).html(“”);
var canvas=document.createElement('canvas');
$(“#dvChart”)[0].appendChild(画布);
//修复IE 8
如果($.browser.msie&&$.browser.version==“8.0”){
G_vmlcavasmanager.initElement(画布);
}
var ctx=canvas.getContext('2d');
ctx.canvas.height=300;
ctx.canvas.width=500;
var折线图=新图表(ctx).Line(数据{
贝塞尔曲线:假
});
},
故障:功能(响应){
警报(“发生错误”);
}
});
}
你能用try-catch实现GetChart,在catch正文中添加断点,并在你的问题中添加StackTrace异常吗?听起来可能很有趣,但我不知道怎么做。我应该在哪里编写异常以及使用什么类型的异常。我尝试用谷歌搜索它,但在这个端点的处理程序中没有找到解决方案http://localhost:55550/Chart.asmx/GetChart
为异常添加try-catch
classI在GetChart方法上方没有看到[WebMethod]
属性