ton*_*dee 7 c# xslcompiledtransform
我的webapp(ASP.NET 2.0)在同一台机器上使用web服务(asmx on 1.1 framework).在获得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)
Run Code Online (Sandbox Code Playgroud)
好吧,这很有趣。我见过序列化器的类似问题,但不是XslCompiledTransform特别的。
从标题来看,我预计这是加载包含/导入的转换的问题,这可能可以通过提供XmlResolver. 找不到自生成的 dll 是非常奇怪的!
作为权宜之计(当您调查问题时),您可能想看看它是否仍然发生在XslTransform. 我意识到这并不理想(考虑到 中的优化等XslCompiledTransform),但它至少可以让您的应用程序在您调查时工作......
我要做的第一件事就是查看事件日志。有什么有趣的吗?还值得检查一下您的防病毒软件是否没有因误报而疯狂(不太可能)。
我要做的下一件事是隔离应用程序 - 即剪掉 1.1 的东西 - 因为你是通过 asmx 页面调用它(到一个单独的应用程序),所以它不应该成为一个因素,所以你应该(理论上)能够仅从平面 xml 文件重现它。理想情况下,项目中最好有一个页面(为了简单起见,可能是 ashx),它只是尝试从本地文件进行转换。
它可以用简单的 xslt/xml 重现吗?你可以让有问题的代码变得越简单,你就越接近找到/修复它,或者拥有可以通过“连接”向 MS 发起攻击的东西。
| 归档时间: |
|
| 查看次数: |
3731 次 |
| 最近记录: |