IIS изменил вложенную папку виртуального каталога, чтобы приложение испортило VB. net ExecuteReader - PullRequest
0 голосов
/ 26 февраля 2020

Недавно я изменил вложенную папку виртуального каталога на приложение в IIS 10.
Все записи базы данных работали безупречно до этого изменения.
Как только я изменил вложенную папку виртуального каталога на приложение.
Я получаю

ExecuteReader requires an open and available Connection. 
The connections current state is closed.

Соединение, однако. Это не закрыто; Он открыт для использования всеми читателями.

Это мой код для этой области.
Строка базы данных находится в файле database.config.

    <add name ="Local" connectionString="Data Source=studio\2016;Database=DBName;User ID=UN;Password=PW;MultipleActiveResultSets=True"/>
    con = New SqlConnection(ConfigurationManager.ConnectionStrings("Local").ConnectionString)
    con.Open()

    Dim chArt As New SqlCommand("select ID, FName from Col1 where ID=@ID", con)
            chArt.Parameters.Add(New SqlParameter("@ID", strID))
            Dim rschArt As SqlDataReader
            rschArt = chArt.ExecuteReader(Data.CommandBehavior.CloseConnection) ' Error line
            If rschArt.Read() Then
     ' other database goodies here.
     end if
     cn.close()

Соединение закрыто внизу файла.
Внутри этого файла aspx.vb
происходит много разных вещей. И все они используют это соединение.
Как указано выше, все работало без сбоев, пока я не изменил вложенная папка виртуального каталога
- приложения в IIS 10.

ОБНОВЛЕНИЕ !!!!!!
Я провел тест на своем веб-сервере LIVE, на сайте администратора (так никто не заметит проблему сам)
Я настроил все то же самое, что и в своей тестовой системе.
Но на этот раз виртуального каталога НЕТ.
Веб-сайт
Создан виртуальный каталог => Преобразовано в приложение.
Установите все разрешения для пула приложений сайта
(Сделать владельцем домен.local \ webserver01)

Произошла та же проблема. Таким образом, не имеет значения, какая это среда. Кажется, что когда он преобразуется в приложение, он портится с объектом считывателя.

Любые предложения по этому поводу были бы хорошими.
Спасибо, EE

1 Ответ

0 голосов
/ 26 февраля 2020

Итак, это была проблема.
Соединение con.Open ()
Его также нужно было поместить вверху ExecuteReader, чтобы у источника было 2 экземпляра con.open (). из которых он никогда не нуждался в этом.
И все пошло на работу.

Я не уверен, почему это перестало работать? Как я удалил приложение, так и осталось с ошибкой. Тестирование на живом сервере - вот что меня оттолкнуло.
В любом случае, сейчас оно работает. По какой-то причине этот "ExecuteReader."
Ему нужно было иметь свой собственный con.open (), чтобы снова работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...