Asp. Net chart. js 500 внутренняя ошибка сервера при использовании веб-метода .asmx - PullRequest
0 голосов
/ 10 февраля 2020

Я пытаюсь нарисовать мультисерийную диаграмму в своем приложении asp webforms. Я использую этот урок Ссылка

и получаю ошибку. Та же проблема была решена, когда я пытался нарисовать диаграмму P ie, где я использую этот урок Link1

В обоих случаях я получаю одну и ту же ошибку. На странице загрузки я получаю эту ошибку:

Chart.asmx/GetChart:1 Failed to load resource: the server responded with a status of 500 (Internal Server Error)

И когда я меняю выбор из выпадающего списка, я получаю эту ошибку

jquery.min.js:2 POST http://localhost:55550/Chart.asmx/GetChart 500 (Internal Server Error)

РЕДАКТИРОВАТЬ Та же самая ошибка происходит, когда я публикую sh приложение. У меня есть веб-метод 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;
    }

У меня также есть два раскрывающихся списка. Один из них - изменить тип страховых полисов, а второй - выбрать сотрудника. Страница 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">

И 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.');
                }
            });
        }
...