1

我为自动完成扩展器提供了这项服务,该服务适用于 prefixText 的“h”和 count 的 3,并在数组中返回“hi”和“hello”:

[System.Web.Services.WebMethod]
    [System.Web.Script.Services.ScriptMethod]
    public string[] GetWebUploadAutoCompleteData(string prefixText, int count)
    {
        try
        {
            DAL.DAL dal = new DAL.DAL();
            string[] returnValues = dal.GetWebUploadAutoCompleteData(prefixText, count);
            return returnValues;
        }
        catch (Exception ex)
        {
            throw new Exception(ex.Message);
        }
    }

服务类第一行:

...
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.Web.Script.Services.ScriptService]
public class BLL : System.Web.Services.WebService
{
...

这是用户界面:

<asp:TextBox ID="txtTest" runat="server" Width="250px"></asp:TextBox>
                <cc1:AutoCompleteExtender ID="aceTest" runat="server" CompletionSetCount="3" DelimiterCharacters=";, :"
                    ServicePath="http://localhost:7051/UploadServices/BLL.asmx" MinimumPrefixLength="2" 
                    Enabled="true" ServiceMethod="GetWebUploadAutoCompleteData" TargetControlID="txtTest">
                </cc1:AutoCompleteExtender>

一切都是正确的,但它不起作用,请帮助。

4

1 回答 1

0

正如您所说,您的 Web 服务和 UI 是单独的项目,因此您不能调用与托管客户端代码的页面位于不同域中的服务。这是一项安全功能,可防止恶意代码将您的无害 javascript 重定向到万维网上的令人讨厌的东西。

解决方案

要访问外部 Web 服务,您可以在 UI 项目中构建第三个 Web 服务代理。第三个服务可以从服务器端访问外部 Web 服务,您可以从客户端访问这个内部 Web 服务。

如果您有任何疑问,请告诉我。

编辑

如果您在项目中创建了代理服务。再做一件事,在页面上添加以下代码

<asp:ScriptManager ID="ScriptManager1" runat="server">

            <Services>

                <asp:ServiceReference Path="AutoComplete.asmx" />

            </Services>

        </asp:ScriptManager>
于 2011-05-04T08:26:49.333 回答