【发布时间】:2009-03-04 12:30:39
【问题描述】:
我有一个相当简单的 web 服务,它从 sql server 公开数据。它将用于在 2 个不同的数据库(SQL Server 和 Lotus Notes)之间同步数据。我们正处于测试 web 服务的阶段,并以 20 req./min. 进行轮询,前 2 分钟一切正常,但在第二分钟之后,我们遇到了异常,显然是连接(到数据库) 无法打开(超时)。
您对做什么或去哪里有什么建议/建议? Web 服务已使用 C#/.NET 进行编程,与 db 的连接在(Web 服务)对象的构造期间打开,并在对象被释放时关闭。
我曾考虑使用 global.asax 来“共享”连接,但经过一番谷歌搜索后,我发现大多数人认为这是一个坏主意,我正在寻找不同的解决方案。
ps。服务是同步池化的,没有2个请求同时存在
-编辑- (在关于池的前 2 个回答者之后) 这是当前代码:
public class DataService : System.Web.Services.WebService
{
private SqlConnection conn = new SqlConnection("Data Source=ip;database=database;uid=user;pwd=secret;");
public DataService ()
{
try
{
conn.Open();
}
catch (Exception dbconn)
{
throw new SoapException("Couldn't open connection to database:" + dbconn.Message + " More info at: " + dbconn.HelpLink, errorCode);
}
//Uncomment the following line if using designed components
//InitializeComponent();
}
~DataService()
{
conn.Close();
}
[WebMethod(Description="Gets all Person changes(from last week)")]
public Person[] GetPerson()
{
Person[] Personen = null;
SqlCommand sqlcmd = conn.CreateCommand();
sqlcmd.CommandText = "SELECT * FROM Person";
SqlDataReader Rows = sqlcmd.ExecuteReader();
while (Rows.Read())
{
//doSomething
}
Rows.Close();
return Personen;
}
}
【问题讨论】:
标签: .net sql-server performance web-services debugging