Я довольно новичок в мире ASP.NET, поэтому у меня возникли небольшие проблемы с поиском наилучшего способа настройки строки подключения во время выполнения, чтобы все приложение использовало эту строку подключения. Вот еще немного информации о приложении, которое я планирую построить:
- Приложение использует проверку подлинности с помощью форм, а не проверку подлинности Windows
- Будет страница входа в систему, где пользователь вводит свой логин и пароль для входа на SQL Server
- Для простоты я хотел бы, чтобы все элементы управления SQLDataSource указывали на строку подключения web.config. Это будет сделано во время разработки, а не для их программной настройки. Таким образом, они будут иметь свойство, подобное этому:
ConnectionString = "<% $ ConnectionStrings: MyDB%>"
- Я бы хотел найти способ изменить строку подключения «MyDB» во время выполнения, чтобы она использовала идентификатор входа и пароль, предоставленные пользователем. Но я НЕ хочу, чтобы это сохранялось в web.config. Он должен быть активным только для сеанса этого пользователя.
Каков "стандартный" способ, которым люди обычно делают это? Я предполагаю, что один из методов - создать переменную Session со строкой соединения, а затем программно изменить свойство ConnectionString каждого элемента управления SQLDataSource во время загрузки страницы. Но я надеялся избежать этого, если это возможно.
Поскольку несколько человек спрашивали, почему я хотел бы использовать уникальное соединение для каждого пользователя, и были обеспокоены отсутствием объединения, я решил прокомментировать это здесь, а не комментировать каждый отдельный ответ.
Характер этого приложения требует, чтобы каждый пользователь подключался к базе данных под своей учетной записью. Внутренняя безопасность связана с их учетной записью, поэтому мы не можем использовать общие учетные записи, такие как «пользователь» и «администратор». Нам также нужно знать конкретную личность каждого пользователя для контроля контроля. В приложении обычно всего от 10 до 20 пользователей, поэтому отсутствие объединения не является проблемой. Мы могли бы обсудить достоинства этого подхода в другой раз, но, к сожалению, у меня нет выбора здесь - проект требует, чтобы каждый пользователь подключался к базе данных под своей учетной записью.
Я хотел бы потребовать аутентификацию Windows, но, к сожалению, некоторые реализации этого приложения потребуют аутентификацию SQL.
Если бы я мог просто установить строку подключения при объявлении элементов управления SQLDataSource следующим образом, это было бы несложно:
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString = "<%= Session("MyConnectionString") %>"
SelectCommand="SELECT * FROM [Customers]">
</asp:SqlDataSource>
Но я получаю сообщение об ошибке, потому что ему не нравятся теги <%%>. Если я не могу сделать это при объявлении элемента управления, какой самый простой способ сделать это программно для каждого элемента управления SQLDataSource в приложении?
Большое спасибо всем за помощь!