gpt4 book ai didi

asp.net - 使用计划任务运行 ASPX 页面的问题

转载 作者:行者123 更新时间:2023-12-04 05:27:19 26 4
gpt4 key购买 nike

我有一个计划任务设置为在 IE7 中每 3 分钟运行一次 Scan.aspx。 Scan.aspx 依次从 10 个文件中读取数据。这些文件会不断更新。文件中的值被插入到数据库中。

偶尔,正在读取的值会被截断或扭曲。例如,如果文件中的值为“Hello World”,则数据库中将出现“Hello W”、“Hel”等随机条目。这些条目上的时间戳完全随机。有时在凌晨 1:00,有时在凌晨 3:30。有些晚上,这根本不会发生。

调试代码时无法重现此问题。所以我知道在 下“正常”情况下,代码正确执行。

更新:

这是读取文本文件的 aspx 代码隐藏(在 Page_Load 中)(为 10 个文本文件中的每一个调用):

Dim filename As String = location
If File.Exists(filename) Then
Using MyParser As New FileIO.TextFieldParser(filename)
MyParser.TextFieldType = FileIO.FieldType.Delimited
MyParser.SetDelimiters("~")
Dim currentrow As String()
Dim valueA, valueB As String

While Not MyParser.EndOfData
Try
currentrow = MyParser.ReadFields()
valueA= currentrow(0).ToUpper
valueB = currentrow(1).ToUpper
//insert values as record into DB if does not exist already
Catch ex As Exception
End Try
End While
End Using
End If

有什么想法为什么在一天中多次运行(通过计划任务)时可能会导致问题?

最佳答案

首先在您的 ASP.NET 解决方案中实现 Logger,例如 Log4Net,在 Scan.aspx 中实现 Log 方法入口和导出点,以及更新数据库的方法。这有可能提供一些关于正在发生的事情的提示。您还应该检查系统事件日志以查看是否有任何其他事件与您失败的数据库条目相关联。

ASP.NET 不是这种情况的最佳选择,尤其是在与 Windows 计划任务配对时;这不是一个健壮的设计。更强大的系统将在 Windows 服务应用程序内的计时器上运行。您用于读取文件和更新到数据库的代码可以移植。如果您有权访问服务器并且可以安装 Windows 服务,请确保您也将日志记录添加到 Windows 服务!

请务必阅读下面的如何调试

  • Windows Service Applications intro on MSDN : 有进一步的链接:
  • 如何:创建 Windows 服务
  • 如何:安装和卸载服务
  • 如何:启动服务
  • 如何:调试 Windows 服务应用程序]
  • 演练:创建 Windows 服务
    组件设计器中的应用程序
  • 如何:将安装程序添加到您的服务应用程序

  • 关于您对有时出现在凌晨 1 点和 3.30 点的明显随机条目的跟进评论:您应该:
  • 当这些发生时,调查站点的 IIS 日志,并找出当时点击(访问)页面的内容。
  • 检查正在访问您的 aspx 页面的服务器上是否有索引服务。
  • 检查是否安装了防病毒软件并确定这是否正在访问您的 aspx 页面或影响 Asp.Net 缓存;这可能会导致编译问题,例如 aspnet 缓存中 aspnet 页面上的文件锁定; (与 aspnet web 应用程序相对的 aspnet 网站的场景)可能会产生奇怪的行为。
  • 找出被截断的条目是否与文件更新的时间一致:交叉引用您的数据库条目时间戳或记录器时间戳与文件更新时间。
  • 更新您的记录器以记录正在读取的文件的全部内容,以验证您没有遇到“垃圾输入 > 垃圾输出”情况。通过运行一晚来小心服务器上的磁盘空间。
  • 找出运行您的 Web 应用程序的 App-Pool 何时被回收,并将其与截断条目的时间进行交叉引用;您只能通过 ASP.NET Health Monitoring 使用 web.config 执行此操作。

  • 您的代码是用“try catch”编写的,它会隐藏错误。如果您不打算对捕获的错误做一些有用的事情,请不要捕获它。在代码中处理边缘情况,而不是 try catch 。
    See this try-catch question on this site .

    关于asp.net - 使用计划任务运行 ASPX 页面的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13037550/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com