Служба WCF не загружается выпадающий - PullRequest
0 голосов
/ 14 января 2019

У меня есть служба wcf, используемая для заполнения каскадного раскрывающегося списка на странице ASPX в IIS 7. В раскрывающемся списке содержатся тысячи пустых тегов параметров, но нет данных. Сервис не выдает ошибку. Все решение работает в среде IDE на настольном компьютере, но при развертывании в IIS служба работает неправильно. Я подозреваю, что это проблема IIS, но не могу ее идентифицировать.

<snippet from aspx page>
<asp:DropDownList ID="ddCommercialServicesSiteName" runat="server" Width="150"></asp:DropDownList>
<ajaxToolkit:CascadingDropDown 
    ID="cddCommercialServicesSiteName" TargetControlID="ddCommercialServicesSiteName" 
    PromptText="Select" PromptValue=""   Category="siteID" 
    ServicePath="~/ServiceDropDown.svc" ServiceMethod="GetCommercialSites"
    LoadingText ="Loading..."  runat="server"/>


<!-- ServiceDropDown.svc code  -->
<%@ ServiceHost Language="C#" Debug="true" Service="ReportDashboard.ServiceDropDown" CodeBehind="ServiceDropDown.svc.cs" %>

публичный список GetCommercialSites (строка knownCategoryValues, строка contextKey)

{ Список сайтов = новый список ();

if (contextKey == null)

{

return sites;

} string query = @ "выберите DISTINCT ContactName AS Сайт, идентификатор с сайтов";

SqlCommand cmd = new SqlCommand(query);

using (SqlConnection con = new SqlConnection(conString))

{
con.Open();

cmd.Connection = con;

cmd.Parameters.Add("@account", SqlDbType.VarChar).Value = contextKey.ToString();

using (SqlDataReader reader = cmd.ExecuteReader())

{

    while (reader.Read())

    {

        sites.Add(new CascadingDropDownNameValue
        {
            name = reader[0].ToString(),
            value = reader[1].ToString(),
        });

    }

    reader.Close();

    con.Close();

}

}

return sites;

}

1 Ответ

0 голосов
/ 15 января 2019

Попробуйте этот подход для получения значений из Reader.

List<MyModelClass> result = new List<MyModelClass>();



while (reader.Read())

{

            object[] values = new object[3];

            reader.GetValues(values);



            MyModelClass model = new MyModelClass();



            model.ID = values[0].ToString();

            model.ValueProperty = values[1].ToString();

            model.ValueProperty2 = values[2].ToString();



            result.Add(model);

}

В вашем View / aspx запустите jQuery, чтобы заполнить ваш выпадающий список,

                            $("#dropdown").change(function () {

                                            dropdown.append($("<option></option>").val("").html("Please wait ..."));



                                            $.ajax({

                                                            url: "/api/CascadingData/GetSomeData/",

                                                            type: "GET",

                                                            dataType: "json",

                                                            data: { Id: Id },

                                                            success: function (d) {

                                                                            dropdown.empty(); // Clear the list, including the please wait option

                                                                            dropdown.append($("<option></option>").val('').html("Select an option..."));

                                                                            $.each(d, function (i, ModelObject) {

                                                                                            dropdown.append($("<option></option>").val(ModelObject.Name).html(ModelObject.Value));

                                                                            });

                                                            },

                                                            error: function () {

                                                                            alert("Error in $('#dropdown').change!");

                                                            }

                                            });

                            }
...