编辑:我找到了解决方案。我以为错误是在尝试编写要比较的文件时生成的,实际上是在我尝试读取要比较的文件时生成的。我在为比较可执行文件调用命令时遇到语法错误,这导致未生成结果文件。当我尝试读取不存在的文件时,我看到了访问冲突(是的,我应该一直在检查文件是否存在)。我在让BC生成比较时遇到问题(由于某种原因,完全相同的命令可从命令提示符下运行,但从C#运行时不起作用),但如有必要,我将作为一个单独的问题提出。
我正在.net应用程序上工作,该应用程序用于比较内部版本之间的代码更改。
我尝试添加的应用程序的一部分利用了无法比较的方式来生成两个代码块的html比较。
为了做到这一点,我从代码中生成文件(请注意,我知道文件名将对多个用户造成冲突,我将在稍后进行修复),然后从命令行调用超越比较可执行文件。我使用以下代码生成文件:
//write the code to a local disk file
System.IO.File.WriteAllText(@workingFolder + "\\File1.txt", (String)dataRow["OldMethodCode"]);
System.IO.File.WriteAllText(@workingFolder + "\\File2.txt", (String)dataRow["NewMethodCode"]);
workingFolder的值是这样的:“ C:\ inetpub \ wwwroot”
我遇到的问题是,当运行此代码并尝试创建这些文件时,出现以下异常:
[UnauthorizedAccessException:对路径'C:\ inetpub \ wwwroot'的访问被拒绝。] System.IO .__ Error.WinIOError(Int32 errorCode,字符串也许是FullPath)+216 System.IO.FileStream.Init(字符串路径,FileMode模式,FileAccess访问权限,Int32权限,布尔useRights,FileShare共享,Int32 bufferSize,FileOptions选项,SECURITY_ATTRIBUTES secAttrs,字符串msgPath,布尔bFromProxy,布尔useLongPath,布尔checkHost)+1430 System.IO.FileStream..ctor(字符串路径,文件模式模式,FileAccess访问,FileShare共享,Int32 bufferSize,FileOptions选项,字符串msgPath,布尔bFromProxy,布尔useLongPath,布尔checkHost)+214
System.IO.StreamReader..ctor(字符串路径,编码编码,布尔detectEncodingFromByteOrderMarks,Int32 bufferSize,布尔checkHost)+187 System.IO.File.InternalReadAllText(字符串路径,编码编码,布尔checkHost)+90 _Default.gridView_SelectedIndexChanged
(Object _sender,EventArgs e)+1024 System.Web.UI.WebControls.GridView.HandleEvent(EventArgs e,布尔causeValidation,字符串验证组)+1241
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint,Boolean includeStagesAfterAsyncPoint)+3804
我已经尝试了很多方法来解决此问题。像任何问题一样,您可能会忘记所有选择,但以下是我认为成功可能性最高(但没有用)的那些选择:
在所有情况下,我似乎都无法创建文件,更不用说访问它来运行比较了。
有没有人提供关于如何解决此问题的建议,或进行不需要创建文件的比较的另一种/更好的方式?
谢谢!
好的,这实际上是稍后在代码中引起的。当我尝试读入报告时(实际上未生成),该错误正在触发。
从C#运行时,让BC生成报告时遇到了问题(完全相同的命令在命令提示符下起作用),但如有必要,我将对此提出一个单独的问题。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句