2

手動で実行すると、エラーなしで正常に実行されるプロセスがあります。CF Administrator Scheduler で毎日午前 3 時に実行するように設定しました。毎回同じ行で実行され、エラーが発生します。過去 1 週間、これを実行しました。
エラー: エレメント DATEE が SESSION で定義されていません。含まれる、または処理されるファイルの特定のシーケンスは次のとおりです。 C:\data\wwwroot\webapps\cfeis\commonapp\sftp\newpdfs.cfm, line: 45
このセッション変数が存在することは知っています。そこでうまくいきます。

 <!---Loops through selected folder. If .zip found, extracts all files into same folder--->
<cftry>
  <cfdirectory action="list" directory="#dropfolder#\#session.datee#" name="listRoot">
  <cfloop query="listRoot">
  <!---<cfif #listroot.name# contains ".zip">--->
    <cfif #listroot.name# contains ".zip" and #listroot.name# contains "Writing">
      <cfset session.foldname=#left(listroot.name, len(listroot.name)-4)#>
      <cfif not DirectoryExists("#dropfolder#\#session.datee#\#session.foldname#")>
        <cfset DirectoryCreate("#dropfolder#\#session.datee#\#session.foldname#")>
      </cfif>
      <cftry>
        <cfzip action="unzip" destination="#dropfolder#\#session.datee#\#session.foldname#" file="#dropfolder#\#session.datee#\#listRoot.name#" overwrite="yes" recurse="yes">
        <cfcatch>
          <cfsavecontent variable= "mailmessage">
            <cfoutput>
              #cfcatch.message#
            </cfoutput>
          </cfsavecontent>
          <cfmail from="eis-distributed-apps@lists.gatech.edu" to="lauren.robinson@oit.gatech.edu" subject="Unzip error" type="html">
            <cfmailpart type="text/html" charset="utf-8">#mailmessage#</cfmailpart>
            <cfmailpart type="text/plain" charset="utf-8">#textMessage(mailmessage)#</cfmailpart>
          </cfmail>
        </cfcatch>
      </cftry>
    </cfif>
  </cfloop>
  <cfcatch>
  </cfcatch>
</cftry>

<cfset session.funzip=0>
<cfset session.funzipArr=ArrayNew(1)>
<cfset sleep(10000)>
<cfdirectory action="list" directory="#dropfolder#\#session.datee#\#session.foldname#" name="listRoot">

エラーが発生する行は、上記のコードに示されている最後の行です。ご覧のとおり、同じ変数がコードの前半で 3 ~ 4 回使用されています。誰かがこれを引き起こしている可能性があることを理解するのを手伝ってもらえますか???

4

1 に答える 1

4

多くの場合、セッションとスケジュールされたタスクは連携しません。セッションは通常、ログイン プロセスの一部として使用されます。スケジュールされたタスクにログインするユーザーがいません。

これが完全なコードである場合は、次のように置き換えることができsession.*ますrequest.*

于 2013-12-10T15:06:24.700 に答える