Autocompleteexender не работает - PullRequest
1 голос
/ 04 мая 2011

У меня есть этот сервис для автозаполнения расширителя, который работает для 'h' для prefixText и 3 для count и возвращает '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>

все правильно, но не работает, пожалуйста, помогите.

1 Ответ

0 голосов
/ 04 мая 2011

Как вы сказали, ваш веб-сервис и пользовательский интерфейс являются отдельным проектом, поэтому вы не можете вызвать сервис, который находится в другом домене, чем страница, на которой размещен ваш клиентский код.Это функция безопасности, которая предотвращает перенаправление вредоносным кодом вашего безобидного JavaScript-кода во что-то неприятное во всемирной сети.

Решение

Чтобы получить доступ к внешней веб-службе,Вы можете создать третий прокси-сервер веб-службы в своем проекте пользовательского интерфейса.Третий сервис может получить доступ к внешнему веб-сервису со стороны сервера, и вы можете получить доступ к этому внутреннему веб-сервису с клиента.

Пожалуйста, дайте мне знать, если у вас есть какие-либо сомнения.

РЕДАКТИРОВАТЬ

Если вы создали прокси-сервис в своем проекте. Сделайте еще одну вещь, добавьте следующий код на странице

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

            <Services>

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

            </Services>

        </asp:ScriptManager>
...