【发布时间】:2012-01-10 06:17:35
【问题描述】:
我在维护一个 Classic ASP 应用程序时遇到问题(架构师早已不在)。每个客户站点都会获得一个与其数据库名称相对应的虚拟目录 - 例如,http://www.site.com/Foo 将是客户 Foo 的站点,并且他们的数据库也将命名为 Foo。 1:1映射,非常清晰。
假设还有http://www.site.com/Bar。在至少中等负载下,我偶尔会遇到的错误是对 /Bar 的 POST 请求正在保存在 /Foo 数据库中。
这里值得注意的是,保存操作被替换为使用 Server.CreateObject 调用实例化的 .NET 组件。这个 .NET 类实例使用
System.EnterpriseServices.ContextUtil.GetNamedProperty("Request");获取当前请求的句柄。 .NET 代码根据此请求构造有关保存操作的所有内容。
我的工作理论是,不知何故,System.EnterpriseServices.ContextUtil 和创建 .NET 组件的 .asp 页面对当前请求的内容有不同的看法。这可能吗?我似乎认为请求是一次处理一个,但我似乎无法找到明确的答案。
我已尝试将所有虚拟目录放入一个应用程序池中,并且每个客户都有自己的 - 无论哪种方式都会出现问题。
我唯一的另一个想法是,数据库连接池项目以某种方式被错误地重用,但是数据库连接是使用数据库名称创建的 连接字符串,所以我觉得这不太可能。
服务器运行 IIS 6,数据库服务器是 SQL Server 2000。升级计划已经在进行中。
【问题讨论】:
标签: com asp-classic iis-6 .net-2.0 database-connection