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 5:Azure Web 应用 CORS 在延迟后停止工作
使用javascript确认时,Asp.net requiredfieldvalidator停止工作