当多个用户访问同一页面时,我在ASP.NET 4网站上收到以下错误消息:
底层提供商未能打开.在System.Data.EntityClient.EntityConnection.OpenStoreConnectionIf等......
我使用Entity Framework 4来访问SQL Server 2008数据库.
页面有时工作,所以我知道连接字符串是正确的.此外,数据库设置为多用户,并且我在连接字符串中将MARS设置为true.
同样在事件查看器中,我有时会收到SQL Server消息:
服务器将断开连接,因为客户端驱动程序在会话处于单用户模式时发送了多个请求.
正如我所说的,只有当我尝试通过刷新页面或单击相同的链接在两台不同的机器上同时访问同一页面时,才会发生这种情况.
任何帮助将非常感激.
添加了连接字符串(第一个用于ASPNETDB,第二个用于主数据库):
<add name="ApplicationServices" connectionString="Data Source=MyServer;Initial Catalog=MyDB;Integrated Security=False;Persist Security Info=False;User ID=****;Password=****;Connect Timeout=120" />
<add name="MyDBEntities" connectionString="metadata=res://*/App_Code.MyDBModel.csdl|res://*/App_Code.MyDBModel.ssdl|res://*/App_Code.MyDBModel.msl;provider=System.Data.SqlClient;provider connection string="Data Source=MyServer;Initial Catalog=MyDB;Integrated Security=False;User ID=****;Password=****;Connect Timeout=120;User Instance=false;MultipleActiveResultSets=True"" providerName="System.Data.EntityClient" />
Run Code Online (Sandbox Code Playgroud)
我用来访问上下文的类如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using MyDBModel;
using System.Web.Security;
/// <summary>
/// Summary description for MyDataAccess
/// </summary>
public static class MyDataAccess
{
// Private Class Members
//-----------------------------------------------------------------------------------------
private static MyDBModel.MyDBEntities dal = new MyDBModel.MyDBEntities();
// Class …Run Code Online (Sandbox Code Playgroud)