Использование ajax для вызова веб-службы при включенной проверке подлинности Windows?

Я пытаюсь вызвать метод веб-службы из javascript:

function Search() {

        var context = new Object;
        context.Filter = "Test";

        SearchService.GetSearch(context, onSuccess, onFailed);
    }

    function onSuccess(result) {
        // userContext contains symbol passed into method
        var res = document.getElementById("resultsDiv");
        res.innerHTML = result;
    }

    function onFailed(result) {
        var res = document.getElementById("resultsDiv");
        res.innerHTML = result.get_message();
    }

Вот подпись веб-сервиса:

[WebMethod]
    public SearchComboBoxItemData[] GetSearch(object context)
    {

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

Однако, когда я использую проверку подлинности Windows для приложения, но разрешаю только анонимный доступ к веб-службе, вызов веб-службы из javascript вызывает следующую ошибку:

Недопустимый вызов веб-службы, отсутствует значение для параметра: "контекст".

Еще одна вещь, которую я заметил, это то, что он отлично работает в обоих направлениях в Firefox. Я вижу ошибку в IE7.

Есть мысли о возможном решении?


person Community    schedule 25.02.2009    source источник
comment
Работает ли он из IE, когда вы включаете как анонимный, так и аутентифицированный доступ к службе?   -  person Peter Lillevold    schedule 10.03.2009
comment
Вы нашли решение этой проблемы, у меня такая же проблема. Спасибо.   -  person Picflight    schedule 19.03.2009


Ответы (2)


Я предполагаю, что вы используете ASP.NET Ajax.

Вы можете попробовать добавить:

preCondition="integratedMode"

в разделе «Модули» вашего файла web.config.

Надеюсь это поможет

person w4ymo    schedule 19.03.2009

Похоже, вы используете встроенную аутентификацию, и IE вошел в систему, а Firefox — нет. Вы можете проверить имя пользователя, под которым зарегистрирован IE.

Кроме того, что-то вроде:

var temp = "";
for(prop in context){
    temp +=prop+"= "+context[prop]+"\n";
}
alert(temp);

Чтобы увидеть, что содержит контекст.

person cofiem    schedule 22.03.2009