Исключение тайм-аута транзакции БД в WCFC#

Место общения программистов C#
Ответить
Anonymous
 Исключение тайм-аута транзакции БД в WCF

Сообщение Anonymous »


Я вызываю WCF из своего кода C# в асинхронном режиме (используя isOneway = true), а WCF, в свою очередь, использует Entity Framework для выполнения операций с БД с помощью шаблона репозитория.

WCF требуется больше времени для обработки (т. е. сохранения файлов в нужном месте) около 4 минут, и после этого я получаю сообщение об ошибке.

System.Data.Entity.Core.UpdateException: произошла ошибка при обновлении записей. Подробности смотрите во внутреннем исключении. ---> System.InvalidOperationException: транзакция, связанная с текущим соединением, завершена, но не удалена. Транзакция должна быть удалена до того, как соединение можно будет использовать для выполнения операторов SQL. at System.Data.SqlClient.TdsParser.TdsExecuteRPC(SqlCommand cmd, _SqlRPC[] rpcArray, Int32 timeout, Boolean inSchema, SqlNotificationRequest NotificationRequest, TdsParserStateObject stateObj, Boolean isCommandProc, Логическая синхронизация, завершение TaskCompletionSource`1, Int32 startRpc, Int32 startParam)

Я предполагаю, что эта ошибка связана с тайм-аутом WCF. Я здесь?

Однако в Entity Framework я уже установил таймаут на 60 минут, используя -

((IObjectContextAdapter)this).ObjectContext.CommandTimeout Если это из-за тайм-аута WCF, нужно ли мне исправить это, используя тайм-аут службы в web.config или каким-либо другим способом?

Код метода WCF, выполняющего операцию -

[OperationContract(IsOneWay = true)] void RequestForBulkPrint (Guid orderId); Реализация этого метода в SVC -

public void RequestForBulkPrint (Guid orderId) { пытаться { _logger.Info("RequestForBulkPrint запущен"); RfDownloadService.DownloadBulkRfs(orderId); //Это мой метод Dll _logger.Info("RequestForBulkPrint завершен"); } поймать (Исключение ex) { _logger.Error(ex, «В методе RequestForBulkPrint произошла ошибка»); } } DownloadBulkRfs этот метод выполняет длительную обработку файлов, т. е. загружает файлы и сохраняет путь к файлу в БД с помощью Entity Framework, поэтому, если количество файлов мало, он будет обрабатываться и не выдавать никаких ошибок, но если счетчик большой, то я получаю сообщение об ошибке. Поэтому я предположил, что это из-за TimeOut, когда я также гуглил, они сказали увеличить время ожидания.

Web.config WCF -
//Пробовал, но безуспешно
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»