Мы вызываем веб-сервис Asp.Net ajax со стороны клиента. Так что функции JavaScript имеют такие вызовы, как:
// Функция для изменения объекта состояния на стороне сервера и установки выбранного узла для дерева дел.
function JSMethod(caseId, url)
{
Sample.XYZ.Method(param1, param2, OnMethodReturn);
}
function OnMethodReturn(result)
{
var sessionExpiry = CheckForSessionExpiry(result);
var error = CheckForErrors(result);
... process result
}
И на стороне сервера в файле ".asmx.cs":
Пример пространства имен
[ScriptService]
class XYZ : WebService
{
[WebMethod(EnableSession = true)]
public string Method(string param1, string param2)
{
if (SessionExpired())
{
return sessionExpiredMessage;
}
.
.
.
}
}
Сайт настроен на использование аутентификации на основе форм. Теперь, если сеанс истек, а затем вызывается функция JavaScript "JSMethod",
тогда получается следующая ошибка:
Ошибка времени выполнения Microsoft JScript: Sys.Net.WebServiceFailedException: сбой метода сервера «Метод» со следующей ошибкой: System.InvalidOperationException-- Сбой аутентификации.
Это исключение вызывается методом "function Sys $ Net $ WebServiceProxy $ invoke" в файле "ScriptResource.axd":
function Sys$Net$WebServiceProxy$invoke
{
.
.
.
{
// In debug mode, if no error was registered, display some trace information
var error;
if (result && errorObj) {
// If we got a result, we're likely dealing with an error in the method itself
error = result.get_exceptionType() + "-- " + result.get_message();
}
else {
// Otherwise, it's probably a 'top-level' error, in which case we dump the
// whole response in the trace
error = response.get_responseData();
}
// DevDiv 89485: throw, not alert()
throw Sys.Net.WebServiceProxy._createFailedError(methodName, String.format(Sys.Res.webServiceFailed, methodName, error));
}
Таким образом, проблема заключается в том, что исключение возникает даже до вызова «Method», исключение возникает при создании веб-прокси. Любые идеи о том, как решить эту проблему