English 中文(简体)
使用LINQ to SQL时,数据库连接不足。
原标题:
  • 时间:2009-01-08 22:50:55
  •  标签:

在开发一个相对简单的 Web 服务时,该服务将提供的数据通过 post 方式记录在数据库表中,结果我们遇到了这个错误:

Exception caught: The remote server returned an error: (500) Internal Server Er or. Stack trace: at System.Net.HttpWebRequest.GetResponse()

在某些服务器上出现此问题,但其他服务器没有。出现问题的是物理服务器,而其他服务器则是虚拟机,显然物理服务器更加强大。

据我们所知,问题在于每次查询后,DB连接没有被释放回池中。我使用如下的using模式:

                using (VoteDaoDataContext dao = new VoteDaoDataContext())
                {

                    dao.insert_response_and_update_count(answerVal, swid, agent, geo, DateTime.Now, ip);
                    dao.SubmitChanges();
                    msg += "Thank you for your vote.";
                    dao.Dispose();
                }

我添加了dao.Dispose()调用以确保当方法结束时连接被释放,但我不知道是否必要。

我使用这个模式正确吗?还有别的什么我需要做以确保连接正确地返回到池中吗?

谢谢!

问题回答

您的诊断信息不够好。HTTP / 500并不足以详细说明您的理论是否正确。如果您想解决问题,您需要在记录中捕获完整的堆栈跟踪。我认为您在这里得出了结论。不,您不需要在使用 { }块结束之前使用Dispose()。这就是使用 { }的作用。

我以为dispose()调用是多余的,但我想要确认一下。

我们在SQL日志中发现连接池已饱和(我不能直接查看,因为我只是个开发者,而这些东西在生产环境中运行),而我的运营人员说他看到连接超时...一旦它们超时,服务器就重新运行,直到下一次它饱和连接池。

我们正在调整连接池设置的过程中......我想确保我没有做错任何事情,因为这是我第一次使用Linq。

谢谢! (xiè xiè)





相关问题
热门标签