Такая проблема.
в Винд-приложении
такой код работает:
DbManager.AddConnectionString("Server=.;Database=Northwind;Integrated Security=SSPI");
using (DbManager db = new DbManager())
{
db.SetCommand(@"SELECT * FROM Categories").ExecuteScalar();
}
в вот в ВЕБ-прилоджении выдается сообщение об ошибке:
Для ExecuteReader требуется открытое доступное соединение. Текущее состояние соединения: Closed.
V> DbManager.AddConnectionString("Server=.;Database=Northwind;Integrated Security=SSPI");
V> using (DbManager db = new DbManager())
V> {
V> db.SetCommand(@"SELECT * FROM Categories").ExecuteScalar();
V> }
V>
Попробуй выделенную строчку в Global.asax перенести. Она должна вызываться только один раз. Либо задай строку конфигурации в Web.config файле.
... << RSDN@Home 1.2.0 alpha rev. 0>>
Если нам не помогут, то мы тоже никого не пощадим.
Здравствуйте, IT, Вы писали:
IT>Здравствуйте, Vglaz, Вы писали:
V>>
V>> DbManager.AddConnectionString("Server=.;Database=Northwind;Integrated Security=SSPI");
V>> using (DbManager db = new DbManager())
V>> {
V>> db.SetCommand(@"SELECT * FROM Categories").ExecuteScalar();
V>> }
V>>
IT>Попробуй выделенную строчку в Global.asax перенести. Она должна вызываться только один раз. Либо задай строку конфигурации в Web.config файле.
тоже самое.
Добавил сюда:
public class Global : System.Web.HttpApplication
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
public Global()
{
InitializeComponent();
DbManager.AddConnectionString("Server=.;Database=Northwind;Integrated Security=SSPI");
}
подробнее об ошибке:
Ошибка источника:
Строка 84: using (DbManager db = new DbManager())
Строка 85: {
Строка 86: db.SetCommand(@"SELECT * FROM Categories").ExecuteScalar();
Строка 87:
Строка 88: al = db
Исходный файл: c:\inetpub\wwwroot\advancedtreeview\webform1.aspx.cs Строка: 86
Трассировка стека:
[InvalidOperationException: Для ExecuteReader требуется открытое доступное соединение. Текущее состояние соединения: Closed.]
System.Data.SqlClient.SqlCommand.ValidateCommand(String method, Boolean executing)
System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream)
System.Data.SqlClient.SqlCommand.ExecuteScalar()
Rsdn.Framework.Data.DbManager.ExecuteScalar()
[RsdnDbManagerException: Для ExecuteReader требуется открытое доступное соединение. Текущее состояние соединения: Closed.]
Rsdn.Framework.Data.DbManager.HandleException(Exception ex)
Rsdn.Framework.Data.DbManager.ExecuteScalar()
AdvancedTreeView.WebForm1.FillNodes(TreeNodeCollection nodes, Int32 IdParent) in c:\inetpub\wwwroot\advancedtreeview\webform1.aspx.cs:86
AdvancedTreeView.WebForm1.Page_Load(Object sender, EventArgs e) in c:\inetpub\wwwroot\advancedtreeview\webform1.aspx.cs:50
System.Web.UI.Control.OnLoad(EventArgs e) +67
System.Web.UI.Control.LoadRecursive() +35
System.Web.UI.Page.ProcessRequestMain() +744
Здравствуйте, IT, Вы писали:
IT>Здравствуйте, Vglaz, Вы писали:
V>>тоже самое.
IT>Проверь, если у ADO.NET права доступа к SQL серверу. IT>Хотя там исключение должно быть другим, но всё же.
где эти права проверить?
с Windows-приложением все работает же.
Здравствуйте, Vglaz, Вы писали:
V>где эти права проверить? V>с Windows-приложением все работает же.
Понятное дело работает. Windows приложение работает от твоего имени, а у тебя наверняка админские права. ASP.NET работает от имени ASPNET юзера.
SQL Server Enterprise Manager -> выбираешь сервер -> Security -> Logins -> контекстное меню -> New Login -> Name -> ... -> выбираешь юзера ASPNET -> Add -> OK -> закладка Database Access -> выбираешь Northwind.
Можно ещё поклацать по закладкам, посмотреть что там интересного.
Далее жмёшь OK. Теперь надо задать разрешения для юзера ASPNET для таблиц и спроков.
Databases -> Northwind -> Users -> ASPNET -> контекстное меню -> All Tasks -> Manage Permissions -> ставишь галки напротив объектов к которым данный юзер имеет доступ -> OK.
... << RSDN@Home 1.2.0 alpha rev. 0>>
Если нам не помогут, то мы тоже никого не пощадим.