我在一个域名上,阅读路径\\machinecap\platform\in
。
该平台是一个共享,在本地导致E:\cappuccino\platform
。该应用程序是使用C#.NET 2.0制作的Windows服务,它使用FileSystemWatcher读取创建和重命名的文件的路径\\machinecap\platform\in
。
我有\\machinecap\platform
(包括所有子目录)以来的“完全控制”权限,但只有这一点,无权访问服务器中的任何其他文件夹(是Windows Server 2003)。
问题是当文件到达服务器时,服务会崩溃,并且事件查看器中不会记录(下降)消息。试图追踪问题,我在服务器中制作了一个loggon,并尝试手动运行应用程序执行的所有步骤。我可以在“in”文件夹中创建文件,但是我无法删除这些文件...显示错误消息:"E:\ is not accessible. Access is denied."
当然我没有访问E:\ root文件夹,只能访问E:\cappuccino\platform
...这是问题吗?我是否真的必须提供E:\
的读取权限才能阅读E:\cappuccino\platform
?
更多信息
异常消息:
Unhandled Exception: System.BadImageFormatException: Could not load file or assembly 'Oracle.DataAccess, Version=2.112.2.0, Culture=neutral, PublicKeyToken=89b483f429c47342' or one of its dependencies.
An attempt was made to load a program with an incorrect format.
File name: 'Oracle.DataAccess, Version=2.112.2.0, Culture=neutral, PublicKeyToken=89b483f429c47342'
at TestRiskStore.ArisReportReader.CreateOrRename(Object source, FileSystemEventArgs e)
at System.IO.FileSystemWatcher.CompletionStatusChanged(UInt32 errorCode, UInt32 numBytes, NativeOverlapped* overlappedPointer)
at System.Threading._IOCompletionCallback.PerformIOCompletionCallback(UInt32 errorCode, UInt32 numBytes, NativeOverlapped* pOVERLAP)
WRN: Assembly binding logging is turned OFF.
To enable assembly bind failure logging, set the registry value [HKLM\Software\Microsoft\Fusion!EnableLog] (DWORD) to 1.
Note: There is some performance penalty associated with assembly bind failure logging.
To turn this feature off, remove the registry value [HKLM\Software\Microsoft\Fusion!EnableLog].
请注意我正在使用Oracle.DataAccess组件..我认为问题与此有关,不确定....任何想法如何解决这个问题?
答案 0 :(得分:0)
我发现了问题:我的机器是32位,服务器是64位,我正在编译应用程序以在任何平台上运行。问题是它安装在服务器上的OracleDataAccess组件是32位,因此程序集只安装在GAC_32文件夹中。因此,当应用程序尝试在64位模式下运行时,它找不到程序集。
所以我只是将应用程序重新编译为x86(32位),并且它有效。现在,应用程序在32位模式下运行,它会在正确的文件夹中查找程序集。