2017-02-15 4 views
0

Я создаю проект веб-API с использованием ef-кода. Для простых запросов он работает хорошо. Но для запросов с большим количеством соединений (. В настоящее время я встречая проблемы при запросе с 4 объединения таблиц Иногда даже одна таблица запроса выдает эту ошибку), он говоритEF code-first - System.ComponentModel.Win32Exception: операция ожидания завершена

Описание: Необработанное исключение во время выполнения текущего веб-запроса. Просмотрите трассировку стека для получения дополнительной информации об ошибке и ее возникновении в коде.

Сведения об исключении: System.ComponentModel.Win32Exception: Операция ожидания истекло

Странная вещь, она отлично работает, когда я ставлю точки останова на «For Each» запроса выполнения запроса или в одном из значения внутри «Для каждого». Когда я удаляю точки останова, он выдает эту ошибку. Почему это происходит?

Я уже пробовал поставить ниже код в файле Configuration.vb в папке Migrations, но все равно не работает.

CommandTimeout = Int32.MaxValue 

Я также проверил параметры подключения в SQL Server. И не помогает.

Tools -> Options -> Query Execution -> Execution Timeout = 0s 

Я также изменил тайм-аут канала в IIS на 100000, но он не работает.

Connections pane -> click the server node -> Sites node -> In Actions pane, click FTP Site Defaults -> Connections -> Control Channel Timeout and Data Channel Timeout and Unauthenticated Timeout i set them to = 100000 

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

+0

ваши контрольные точки не будут удалены, если вы не присоедините отладчик –

+0

Как это сделать? – Nurul

+0

Это был мой ответ за беспокойство, что у вас будут контрольные точки в производстве. –

ответ

0

Я использую EF6 с MVC5. До сих пор я не встречался с ответом, в котором предлагается помещать CommandTimeout в файл DbContext, который был создан во время миграции Code-First (импорт таблиц DB с сервера). Так что ради других, кто находится в той же лодке, что и я, поставьте ниже код в конструкторе New() в файле DbContext.vb в папке «Модели».

Me.Database.CommandTimeout = Int32.MaxValue 

Я также поставил

CommandTimeout = Int32.MaxValue 

в Configurations.vb файл в папке Миграции, а также. Когда я попытался удалить CommandTimeout в файле Configurations.vb, казалось, что для выполнения запроса потребовалось больше времени.

Смежные вопросы