2009-02-25 17 views
5

Próbuję wywołać metody usługi sieci Web z javascript:Używanie ajax do wywoływania usługi sieciowej po włączeniu uwierzytelniania systemu Windows?

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(); 
    } 

oto podpis serwis internetowy:

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

Kiedy używać uwierzytelniania formularzy i umożliwiają anonimowy dostęp do usługi internetowej, wszystko działa w porządku.

Jednak kiedy używać uwierzytelniania systemu Windows dla aplikacji, ale zezwolić na dostęp anonimowy do usługa tylko, wywołanie usługi sieci Web z javascript wyrzuca następujący błąd:

Nieprawidłowe wywołanie serwis internetowy, brakuje wartość parametru: " kontekst'.

Inną rzeczą, którą zauważyłem, jest to, że działa dobrze w obu kierunkach w Firefoksie. Widzę błąd na IE7.

Jakieś przemyślenia na temat możliwego rozwiązania?

+0

Czy to działa z IE po włączeniu zarówno anonimowego, jak i uwierzytelnionego dostępu do usługi? –

+0

Czy znalazłeś rozwiązanie tego problemu, mam ten sam problem. Dzięki. – Picflight

Odpowiedz

0

Zakładam, że korzystasz z Ajaxa ASP.NET.

Można spróbować dodając:

preCondition="integratedMode" 

atrybut do sekcji modułów pliku web.config.

Nadzieja to pomaga

0

Brzmi jak używasz zintegrowanego uwierzytelniania oraz IE zalogowany, ale Firefox nie ma. Możesz sprawdzić nazwę użytkownika, że ​​IE jest zalogowany w ramach.

Również coś wzdłuż linii:

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

Aby zobaczyć, co zawiera kontekst.

Powiązane problemy