7

私のWebアプリケーション(ASP.NET 2.0)は、同じマシン上でWebサービス(1.1フレームワーク上のasmx)を使用します。代わりにXMLを取得した後、それをに渡して XslCompiledTransformXMLをHTMLに変換すると、正常に機能します。

昨日私はSystem.IO.FileNotFoundException頻繁に受け取りました、そして何がこの種の問題を引き起こすのか分かりません。

最初に見て、それはc:\ windows \ tempの読み取り/書き込み権限に関するものだと思い、次にネットワークサービス(最後に全員-_-!)の完全な権限を与えるようにしましたが、役に立ちません。

任意のアイデアや解決策をいただければ幸いです。

-------------------- stack trace --------------------------
Exception: **System.IO.FileNotFoundException**
**Could not find file 'C:\WINDOWS\TEMP\sivvt5f6.dll'.**

   at System.IO.__Error**.WinIOError**(Int32 errorCode, String maybeFullPath)
   at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 
rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy)
   at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share)
   at Microsoft.CSharp.CSharpCodeGenerator.FromFileBatch(CompilerParameters options, String[] fileNames)
   at Microsoft.CSharp.CSharpCodeGenerator.FromDomBatch(CompilerParameters options, CodeCompileUnit[] ea)
   at Microsoft.CSharp.CSharpCodeGenerator.System.CodeDom.Compiler.ICodeCompiler.CompileAssemblyFromDomBatch(CompilerParameters options, CodeCompileUnit[] ea)
   at System.CodeDom.Compiler.CodeDomProvider.CompileAssemblyFromDom(CompilerParameters options, CodeCompileUnit[] compilationUnits)
   at System.Xml.Xsl.Xslt.Scripts.CompileAssembly(List`1 scriptsForLang)
   at System.Xml.Xsl.Xslt.Scripts.CompileScripts()
   at System.Xml.Xsl.Xslt.QilGenerator.Compile(Compiler compiler)
   at System.Xml.Xsl.Xslt.**Compiler.
Compile**(Object stylesheet, XmlResolver xmlResolver, QilExpression& qil)
   at System.Xml.Xsl.XslCompiledTransform.LoadInternal(Object stylesheet, XsltSettings settings, XmlResolver stylesheetResolver)
   at System.Xml.Xsl.**XslCompiledTransform.Load**(String stylesheetUri, XsltSettings settings, XmlResolver stylesheetResolver)
4

5 に答える 5

4

詳細を確認し、関連するトピックをグーグルで検索した後、

  1. この問題は .Transform() で見つかり、Marc が言ったように XmlSerialization でも発生します。Christoph Schittko には、トラブルシューティングに関する優れた記事があります。
  2. シリアライザーの動作を変更できるウィンドウの更新パッチが原因である可能性があると誰かが言った。

    サーバーに変更があるかどうかを確認するために管理者に電話しましたが、彼は何も変わっていないと言い、再起動するよう提案してくれました。

    はい...サーバーを再起動することで問題は解決しました(Windows 2003;)

于 2008-11-08T01:17:03.033 に答える
1

トラブルシューティングのためのいくつかのアイデア:

  • dllファイルは作成されていますか?たとえば、SysinternalsのFilemonを使用して、XSLTが実際にコンパイルされているかどうかを確認できます。
  • 十分な空きディスク容量がありますか?
  • 一時フォルダにはいくつのファイルがありますか?%TMP%のファイルが多すぎると問題が発生する可能性があります
  • マシン上で他に何が実行されていますか?Tempフォルダをクリーンアップする可能性のあるアンチウイルスのようなものはありますか?
于 2008-11-24T18:41:56.637 に答える
1

マークさん、お返事ありがとうございます。

私のxslファイルには参照する外部リソースがないため(インクルード、インポートなし)、XmlResolverを調査する必要はありません。

変換は他のサーバー(2台のサーバーがあります)でも正常に機能します。また、このサーバーでも、iisresetを実行した後、再び機能するようになります。しかし、1時間前に、それは再びやってくる。イベントビューアを確認しましたが、同じエラーが記録されました。

----------------イベントビューアから-------------イベントタイプ:警告

イベントソース:ASP.NET 2.0.50727.0イベントカテゴリ:WebイベントイベントID:1309日付:2008年11月7日時間:2:07:37 PMユーザー:N / Aコンピューター:XXXX説明:イベントコード:3005イベントメッセージ:未処理の例外が発生しました。イベント時間:2008年11月7日午後2時7分37秒イベント時間(UTC):2008年11月7日午前7時7分37秒イベントID:f17058f2126c4a4abb1742a3099010b0イベントシーケンス:25407イベント発生:276イベント詳細コード:0

プロセス情報:プロセスID:1128プロセス名:w3wp.exeアカウント名:NT AUTHORITY \ NETWORK SERVICE

例外情報:例外の種類:FileNotFoundException例外メッセージ:ファイル'C:\ WINDOWS \ TEMP\irdt-y8o.dll'が見つかりませんでした。....。

于 2008-11-07T07:08:27.907 に答える
1

わかりました、それは興味深いものです。シリアライザーで同様の問題を見たことがありますが、XslCompiledTransform具体的にはそうではありません。

タイトルから、インクルード/インポートされた変換の読み込みの問題であると予想していましたが、XmlResolver. 自己生成された dll が見つからないのは非常に奇妙です!

一時しのぎとして (問題を調査している間) XslTransform、. これは理想的ではないことは承知していますが(最適化などを考えるとXslCompiledTransform)、少なくとも調査中にアプリが機能する可能性があります...

私が最初に調査することは、イベント ログを確認することです。何か面白い?また、ウイルス対策ソフトウェアが誤検知でおかしくなっていないかどうかも確認する価値があります (可能性は低いです)。

次に行うことは、アプリを分離することです-つまり、1.1のものを切り取ります-asmxページを介して(別のアプリケーションに)呼び出しているため、それは要因であってはならないため、(理論的には)できるはずですフラットなxmlファイルから再現します。理想的には、ローカル ファイルから変換を実行するだけのページ (簡単にするために ashx など) をプロジェクトに含めるとよいでしょう。

単純な xslt/xml で再現できますか? 問題のあるコードを単純にすればするほど、問題を見つけて修正するか、「接続」を介して MS で起動できる何かを手に入れることができます。

于 2008-11-07T05:27:12.743 に答える
1

Windows Server 2003 でも同じ問題が発生しています。ASP.NET アプリケーションが Web サービスを (Web 上の外部マシンで) 使用していて、しばらくするとこのエラー メッセージが表示されます。

アプリ プールでリサイクルを実行すると問題は解決しますが、問題の原因に対する回答を探しています。

誰?

于 2009-03-24T23:37:16.370 に答える