prapti.n3 Ответов: 1

500 внутренняя ошибка сервера при заполнении выпадающего списка через AJAX-вызов webservice.


Мой веб-сервис не вызывается. Я получаю 500 внутренних ошибок сервера. что же мне делать?

Это HTML кодирование:

$(window).load(function () {
<pre>              $.ajax({
                        type: "GET",
                        data: {},
                        url:  "services/VisiTracWS.asmx/GetLocation",
                        success: function (response) {
                            alert("1");
                            var strSection = '<option value="0">Select Location</option>';
                            if (response.d.length > 0) {
                                for (i = 0; i < response.d.length; i++) {

                                    strSection = strSection + '<option value="' + response.d[i].LocationID + '">' + response.d[i].LocationName + '</option>';
                                }
                            }
                            $('#ddlLocations').html(strSection);
                        },
                        error: function (response) {
                            alert(response.status + " " + response.statusText);
                        }
                    });
                });



Это веб-сервис:

<pre>[WebMethod]
        public static List<Location> GetLocation()
        {
            List<Location> lst = new List<Location>();
            try
            {
                visitrac.Location lc = new visitrac.Location();
                DataTable DT = lc.GetDropdown();

                lst = (from DataRow dr in DT.Rows
                       select new Location()
                       {
                           LocationID = Convert.ToInt32(dr["LocationID"]),
                           LocationName = Convert.ToString(dr["LocationName"]),
                       }).ToList();
            }
            catch (Exception ex)
            {
                // clsException.WriteLog("", "GetLocation", ex.Message);
            }
            return lst;
        }


Что я уже пробовал:

Я попытался сделать этот метод статичным. изменение поста, чтобы получить

Richard MacCutchan

Что вам нужно сделать, так это посмотреть журналы сервера, чтобы выяснить, почему он выдал ошибку 500.

prapti.n3

где я могу найти журналы сервера в Mozilla firefox??

Karthik_Mahalingam

доступен ли url-адрес из адресной строки браузера ?

Richard MacCutchan

Посмотрите на сервер.

prapti.n3

да.. я могу получить доступ к веб-службе

Dave Kreskowiak

500 ошибок означают, что серверный код разбился или по какой-то причине не смог работать.

Как правило, это то, что вы диагностируете с помощью отладчика. Поместите точку останова в первую строку метода GetLocation и запустите код. Пройдите через свой браузер и сделайте то, что вы делали раньше, чтобы вызвать сбой. Когда код на стороне сервера запускается, он попадает в точку останова, и вы можете использовать отладчик, чтобы пройти через код и изучить содержимое переменной, чтобы помочь вам понять, почему он разбился.

1 Ответов

Рейтинг:
0

Karthik_Mahalingam

попробуй вот так

Веб-сервис c#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Services;

namespace WebApplication135.services
{
    
    [WebService(Namespace = "http://tempuri.org/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    [System.ComponentModel.ToolboxItem(false)] 
    [System.Web.Script.Services.ScriptService]
    public class VisiTracWS : System.Web.Services.WebService
    {

        [WebMethod]
        public   Location[] GetLocation()
        {
            List<Location> lst = new List<Location>();
            lst.Add(new Location() { LocationID = 1, LocationName = "India" });
            lst.Add(new Location() { LocationID = 2, LocationName = "Australia" });
            lst.Add(new Location() { LocationID = 3, LocationName = "China" });
            return lst.ToArray();
        }
    }

    public class Location {
        public int LocationID { get; set; }
        public string LocationName { get; set; }

    }
}


HTML

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <script src="Scripts/jquery-1.7.1.js"></script>
    <script>
        $(window).load(function () {
            $.ajax({
                type: "post",
                data: {},
                url: "services/VisiTracWS.asmx/GetLocation",
                contentType: "application/json; charset=utf-8", 
                dataType: "json",  
                success: function (response) { 
                    var strSection = '<option value="0">Select Location</option>';
                    if (response.d.length > 0) {
                        for (i = 0; i < response.d.length; i++) {
                            strSection = strSection + '<option value="' + response.d[i].LocationID + '">' + response.d[i].LocationName + '</option>';
                        }
                    }
                    $('#ddlLocations').html(strSection);
                },
                error: function (response) {
                    alert(response.status + " " + response.statusText);
                }
            });
        });
    </script>
</head>
<body>
    <select id="ddlLocations"></select>
</body>
</html>