【发布时间】:2019-06-08 21:13:15
【问题描述】:
我有一个 wcf 服务,用于在 IIS 7 的 ASPX 页面中填充级联下拉列表。下拉列表有数千个空选项标签,但没有数据。该服务不会引发错误。整个解决方案在桌面 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" %>
public List GetCommercialSites(string knownCategoryValues, string contextKey)
{ 列出网站 = new List();
if (contextKey == null)
{
return sites;
} string query = @"select DISTINCT ContactName AS Site , id from sites";
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;
}
【问题讨论】:
-
我认为这与您的问题无关,但@account 参数是做什么用的?您的查询似乎没有使用它。至于你的问题,你说的是 sites.Add 被调用了数千次,但每次的名称和值都是空白的?您是否已对其进行调试以查看查询返回的内容?
-
格式化时出错。我丢失了查询 where 子句。应该是 "where account = @account.
-
如果我单步执行该函数,它会返回适当的项目数,例如 5。但是当呈现页面时,下拉列表有大约 2300 个空白选项标签。因此,在将列表移交给 asp 引擎之间进行一些操作,但我不知道如何在服务器上进行调试。
标签: c# asp.net wcf iis cascadingdropdown