Web服务实例化对象C#.NET

时间:2012-04-15 13:43:34

标签: c# web-services constructor instance

我是Web服务,C#和.NET的新手。 我想在我的web方法中使用连接对象以便在数据库上写入数据,但是我没有在实例化这个对象的地方,实例化它然后在web方法中将其销毁是非常荒谬的。 我希望每次都可以访问我的连接实例,所以有一种构造函数或其他东西可以正确实现。

2 个答案:

答案 0 :(得分:3)

您需要在Web方法中实例化数据库连接类。我认为在你的网络方法中实例化这样一个对象并不荒谬:

  • C#是一种object-orientated语言。没有创造物体,你不会取得多少成就;和
  • 大多数ADO.NET连接对象(包括SQL Server和Oracle)都实现了连接池,因此每次创建新的连接对象时都不会创建与服务器的物理连接。而是数据库库将为您管理连接池。

我建议使用这样的方法来确保在webservice调用之后释放连接:

// This example uses SQL-Server connections, but most
// ADO.NET database drivers are similar.
using(SqlConnection conn = new SqlConnection(MyConnStr)) 
{
   UseConnection(conn);
} 
// connection released to pool here automatically.

答案 1 :(得分:3)

我知道你的意思:你不想在每种方法中重复连接管理代码。那确实是荒谬的。

我这样做:我使用this technique创建每请求连接。当WCF呼叫结束时,我破坏连接。

所以在通话过程中我可以依赖这个连接。它将被正确清理。

不幸的是,WCF没有HttpContext.Items内置的等价物,所以我们不得不在使用扩展时破解它。