• Привет, Гость!
  • Войти
  • Регистрация
  • Записи
  • Форумы
  • Люди
  • Файлы
  • Работа
  • Технологии

Как сообщить об ошибке в синхронном обработчике

Все форумы  Поиск  Правила  Помощь 
 Активные темы  Темы без ответов
Привет, гость! Войти
Форумы GotDotNet.Ru » WSS и Sharepoint Portal » Как сообщить об ошибке в синхронном обработчике
Страницы: 1
RSS
Как сообщить об ошибке в синхронном обработчике, не используя properties.Cancel и properties.ErrorMessage?
Rockie
Сообщений: 303 Регистрация: 24.03.2007
#1
23.01.2010 16:59
Господа!

WSS 3.0. Для того, чтобы вывсети сообщение об ошибке в синхронном обработчике, можно использовать
1)
            properties.Cancel = true;
            properties.ErrorMessage = string.Format("текст ошибки.");

Но в моем случае форма кастомизирована и в результате получаю ошибку "The data source control failed to execute the insert command." Это такое глюкалово с кастомизированными формами.

Пробую альтернативные методы сообщения об ошибке(просто с обычной, не измененной формой):
2)
SPUtility.TransferToErrorPage("TransferToErrorPage function redirected here!");


3)
и даже через SPUtility.Redirect, вытаскивая контекст:
    public class MyHandler : SPItemEventReceiver
    {
        /// <summary>
        /// контекст для реализации редиректа response.redirect
        /// </summary>
        public HttpContext currentContext;
        
        /// <summary>
        /// вызов конструктора для response.redirect
        /// </summary>
        public MyHandler()
        {
            currentContext = HttpContext.Current;
        }
        //..
        
		public override void ItemUpdating(SPItemEventProperties properties)
		{
			SPUtility.Redirect("http://mail.ru", SPRedirectFlags.Default, currentContext);
		}
		// ..
	}


Редиректа не происходит, а просто отображается список, в своем логе вижу что ничего не происходит. Исключений тоже нет. Эти методы вроде должны бы работать, обработчик ведь синхронный, Updating.

В общем как можно сообщить об ошибке не используя properties.Cancel, properties.ErrorMessage?
Чтобы иметь большой гардероб - надо иметь большой гардероб. блог
 
 
Mephala
Сообщений: 443 Регистрация: 19.10.2006
#2
25.01.2010 15:37
Пользуюсь третьим вариантов в ItemAdding. Все отрабатывает. Попробуйте через debug глянуть, почему не переходит.
 
 
Rockie
Сообщений: 303 Регистрация: 24.03.2007
#3
08.02.2010 11:38
Спасибо!

Третий вариант работает, если поменять SPRedirectFlag на "Trusted". Этот вариант бросает исключение "Exception: Thread aborted..", зато работает:

                        try
                        {
                            SPUtility.Redirect(properties.WebUrl + @"/ErrorStatusIsClosed.aspx", SPRedirectFlags.Trusted, currentContext);
                        }
                        catch (Exception ex)
                        {
                            Message(ex.Message + "\n" + ex.Source.ToString() + "\n" + ex.StackTrace.ToString() + "\n");
                        } 
Чтобы иметь большой гардероб - надо иметь большой гардероб. блог
 
 
 
Страницы: 1
Форумы GotDotNet.Ru » WSS и Sharepoint Portal » Как сообщить об ошибке в синхронном обработчике
О сайте   Свяжитесь с нами   Конфиденциальность   Версия для печати
Работает на 1С-Битрикс: Управление сайтом ASP.NET  |  Хостинг на Parking.Ru