ASP Classic 页面停止工作

Posted

技术标签:

【中文标题】ASP Classic 页面停止工作【英文标题】:ASP Classic page quit working 【发布时间】:2010-04-19 18:31:47 【问题描述】:

我的 IIS7 服务器上运行了一组旧页面至少一年了。上周的某个时候发生了一些变化,现在这一行:

Response.Write CStr(myRS(0).name) & "=" & Cstr(myRS(0).value)

它过去只返回字符串:'Updated=true'(sproc 处理输入参数,将它们存储到表中,检查错误,当这一切都完成后,通过执行以下语句返回成功代码: 选择'true'作为[更新]

现在我的页面错误处理程序正在参与并提供:

myError=Error from /logQuizScore.asp
Error source: Microsoft VBScript runtime error
Error number: 13
Error description: Type mismatch

需要注意的是,所有页面都使用相同的框架——相同的数据库、相同的编码格式、连接字符串以及(据我所知)所有其他页面都在工作。

到此为止的问题:

对存储过程的调用工作正常(资料已存储到给定的表中)。存储过程的输出工作正常(我可以使用给定的参数执行直接调用,并且工作正常。我可以看到分析器调用和传递。我可以将所有代码替换为 'select 'true' as updated' 并且错误是一样的。

直到上面的 response.write 语句的所有内容都是正确的。

所以有些东西改变了 ADO 呈现特定记录集的方式。

所以我尝试:Response.Write myRS.Item.count

然后得到:

错误号:424 错误描述:需要对象

记录集对象似乎没有实例化,而是命令对象_did 执行。重复 - 许多其他页面只是相同的基本逻辑,可以毫无问题地访问其他存储过程。

完整代码sn-p

set cmd1 = Server.CreateObject("ADODB.Command")
cmd1.ActiveConnection = MM_cnCompliance4_STRING
cmd1.CommandText = "dbo._usp_UserAnswers_INSERT"
...
cmd1.CommandType = 4
cmd1.CommandTimeout = 0
cmd1.Prepared = true
set myRS = cmd1.Execute

Response.Write CStr(myRS(0).name) & "=" & Cstr(myRS(0).value)

【问题讨论】:

一个让我印象深刻的随机想法 - 'true' 是否实际上被解释为布尔值,因此不会被转换为字符串?您是否尝试过执行类似SELECT 'hello world' AS [Updated] 的操作?另外,你试过这个吗?它可能会帮助您弄清楚为什么会出现类型不匹配错误...msdn.microsoft.com/en-us/library/ms525253.aspx 您是否已经尝试替换 cmd1.CommandText = "SELECT 'true' AS updated"cmd1.CommandType = 1... 背后发生了什么? “hello world”或“select 1 as updated”没有变化。除此之外——这个页面已经使用了很多年——代码没有改变。 fliburt 改变 CommandType 的想法 - 有趣 - 并且奏效了。 RecordSet 对象被创建并输出到reponse.write 行。 sn-ps 被截断的部分只是参数列表,形式为 - cmd1.Parameters.Append cmd1.CreateParameter("@Score", 3, 1,4,cmd1__Score)。 伙计,这很难。您是否已经尝试在周围 ASP 代码之外的简单 vbscript 中运行您的 sn-p? 【参考方案1】:

在我看来,sproc 已更改并返回一个标量而不是结果集。

更改CommandType = 1 (adCmdText) 需要与您的查询匹配更改为SELECT 'whateveryouwannatry' AS [updated]

由于您声明 asp 代码中没有任何更改,我们可以通过指定输出参数来排除您的命令/sproc 的返回类型已更改。

【讨论】:

spocs 也没有变化。上周的某个时候,我更改了另一个站点上的配置设置,但该站点已经运行了多年未修改。

以上是关于ASP Classic 页面停止工作的主要内容,如果未能解决你的问题,请参考以下文章

当我在 asp.net 上发布我的网站时,注册/登录停止工作

ASP.NET ChangePassword 控件停止工作

ASP.NET 5:Azure Web 应用 CORS 在延迟后停止工作

使用javascript确认时,Asp.net requiredfieldvalidator停止工作

处理错误“WebDev.WebServer.Exe 已停止工作”

asp.net core blazor:网络共享上的图像/文件工作 1 分钟,然后停止工作