none
WCF TimeoutException при асинхронном вызове RRS feed

  • Вопрос

  • Здравствуйте.

    Есть Silverlight приложение, и WCF сервис.

    У сервиса есть интерфейс, вроде такого:

    [ServiceContract]
        public interface IUserControl
        {
            [OperationContract]
            int LogIn(string strUser, object oPwd);
        }

    У SilverLight приложения есть Service References, он сгенерирован автоматически с параметром "Создать асинхронные операции".

    В итоге клиент получил следующий вид описанного метода в классе:

    private System.IAsyncResult OnBeginLogIn(object[] inValues, System.AsyncCallback callback, object asyncState)

    {

    .......

    }
           
     private object[] OnEndLogIn(System.IAsyncResult result)

    {
     .......

     }

    Так же имеем Web.config, в котором прописаны таймауты. Если сделать задержку в приложении большую чем в таймауте, то OnEndLogIn() вылетает с исключением по таймауту. Можно ли обработать это исключение в сгенерированном клиенте? Проблема, в том, что клиент может быть сгенерирован снова. 

    15 сентября 2011 г. 8:07

Ответы

  • Студия генерирует клиента как partial class. Вы можете объявить в отдельном файле класс с точно таким же именем, таким же пространством имен, отметить его как partial и дописать в него методы вида OnEndLoginSafe. Тогда ваши изменения не потеряются при повторной генерации.

    Второй вариант - использовать любой AOP Framework (например, Enterprise Library Policy Injection) и на лету навешивать шаблонную обработку исключений на методы с именами OnEndXXX.

     

    • Помечено в качестве ответа Evgeny Mazurov 15 сентября 2011 г. 12:12
    15 сентября 2011 г. 9:59

Все ответы

  • Студия генерирует клиента как partial class. Вы можете объявить в отдельном файле класс с точно таким же именем, таким же пространством имен, отметить его как partial и дописать в него методы вида OnEndLoginSafe. Тогда ваши изменения не потеряются при повторной генерации.

    Второй вариант - использовать любой AOP Framework (например, Enterprise Library Policy Injection) и на лету навешивать шаблонную обработку исключений на методы с именами OnEndXXX.

     

    • Помечено в качестве ответа Evgeny Mazurov 15 сентября 2011 г. 12:12
    15 сентября 2011 г. 9:59
  • Уважаемый пользователь, пожалуйста, не забудьте отметить сообщение или сообщения, которые являются решением вашей проблемы, даже если это ваше собстевенное сообщение. Это можно сделать с помощью кнопки 'Пометить как ответ', которая есть под каждым сообщением.

    Спасибо.


    Для связи [mail]
    15 сентября 2011 г. 12:03
    Модератор