C# 在反射的方法调用中访问网络共享

C# 在反射的方法调用中访问网络共享,c#,reflection,C#,Reflection,我们有一个访问网络共享的方法。直接调用此方法时效果很好,但通过reflecton调用时会出现System.IO.IOException。用户上下文似乎对反射的代码不可用(请参见下面的堆栈跟踪)。有没有办法防止这种情况 System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.IO.IOException: Logon

我们有一个访问网络共享的方法。直接调用此方法时效果很好,但通过reflecton调用时会出现System.IO.IOException。用户上下文似乎对反射的代码不可用(请参见下面的堆栈跟踪)。有没有办法防止这种情况

System.Reflection.TargetInvocationException: Exception has been thrown by 
the target of an invocation. ---> System.IO.IOException: Logon failure:
unknown user name or bad password.
at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
at System.IO.Directory.InternalGetFileDirectoryNames(String path, 
String userPathOriginal, String searchPattern, Boolean includeFiles,
Boolean includeDirs, SearchOption searchOption)
at System.IO.Directory.GetDirectories(String path, String searchPattern, 
SearchOption searchOption)
这很有效

   Library.Class obj =new Library.Class();
   obj.Execute(serverPath);
这行不通

    Assembly assembly = Assembly.LoadFile(@"pathTo\Library.dll");
    Type type = assembly.GetType("Library.Class");
    MethodInfo executeMethod = type.GetMethod("Execute");
    object classInstance = Activator.CreateInstance(type, null);
    object[] parameterArray = new object[] { serverPath};
    executeMethod.Invoke(classInstance, parameterArray);
其中Library.Class.execute定义为

public void Execute(string serverPath){
   string[] directories = Directory.GetDirectories(serverPath, 
                          "1.*", SearchOption.TopDirectoryOnly);
    foreach (var directory in directories) {
        Console.WriteLine(directory);    
    }
}
serverPath
是要求用户输入凭据的网络共享

-----更新1-------


这似乎有点环保——我至少有一台测试机器,所有东西都可以工作。我将进行更多的测试,以确定哪些差异是重要的。

您可能希望尝试以下方法以获取当前目录:

AppDomain.CurrentDomain.BaseDirectory


System.Reflection.Assembly.getExecutionGassembly().Location

这似乎是某种福禄克环境问题。自从测试机重新启动后,我们一直无法重现该问题。

是否有
LoadFrom
(而不是
LoadFile
)的行为有任何不同
LoadFile不会将文件加载到LoadFrom上下文中,也不会使用加载路径解析依赖关系,就像LoadFrom方法那样
,这是有用的信息,但我认为问题与
LoadFrom
vs
LoadFile
无关,因为在实际代码中,Library.dll与正在执行的应用程序位于同一文件夹中。此外,问题今天神秘地停止了。我的示例不清楚--检查的目录不是当前目录,而是完全限定的网络共享,例如\\machine\share$\dir。