.NET应用程序无法从网络共享和RDP Shell运行

时间:2013-05-09 20:26:04

标签: winforms .net-4.0 cas rdp terminal-services

我正在尝试使用RDP客户端运行我的.NET应用程序,该应用程序位于我们域中的网络共享中。

当启动“完整”RDP会话(即打开整个桌面)然后从 .exe 文件运行我的应用程序时,一切正常。

但是当我从RDP客户端设置与Startup Application Path相同的 .exe 时,我收到以下错误:

(PS:我将堆栈跟踪剪切到我发现自己更重要的调用中)

System.TypeInitializationException: The type initializer for 'NHibernate.Cfg.Environment' threw an exception. ---> System.ArgumentException: Incorrect Parameter. (Exception from HRESULT: 0x80070057 (E_INVALIDARG))
   at System.Security.Policy.PEFileEvidenceFactory.GetLocationEvidence(SafePEFileHandle peFile, SecurityZone& zone, StringHandleOnStack retUrl)
   (...)
   at System.AppDomain.get_Evidence()
   (...)
   at System.Configuration.ConfigurationManager.GetSection(String sectionName)
   at NHibernate.Cfg.Environment.LoadGlobalPropertiesFromAppConfig() in p:\nhibernate-core\src\NHibernate\Cfg\Environment.cs:line 212
   at NHibernate.Cfg.Environment..cctor() in p:\nhibernate-core\src\NHibernate\Cfg\Environment.cs:line 198

当我使用阴影复制文件时,我在应用程序刚刚开始时设置了一个新的AppDomain(.exe入口点):

<STAThread()>
Public Sub Main()
    Try
        Dim currentDirectory As DirectoryInfo = New DirectoryInfo(Directory.GetCurrentDirectory)
        Dim runtimeDirectory As DirectoryInfo = New FileInfo(Assembly.GetExecutingAssembly.Location).Directory

        Dim appDomainStartupSetup As New AppDomainSetup
        appDomainStartupSetup.ApplicationBase = currentDirectory.FullName
        appDomainStartupSetup.ShadowCopyFiles = "true"

        Dim appDomainStartup As AppDomain = AppDomain.CreateDomain("StartupAppDomain", Nothing, appDomainStartupSetup)
        Dim entrypointLoader As LoadBaseFiles = appDomainStartup.CreateInstanceFromAndUnwrap(Assembly.GetExecutingAssembly.CodeBase, "MyClass.LoadBaseFiles")
        entrypointLoader.RuntimeDir = runtimeDirectory.FullName ' Setup the 'entry-point' object 
        entrypointLoader.StartupEntryPoint() ' Starts the Application

    Catch ex As Exception
        ' Error Handling Here
    End Try
End Sub

Public Class LoadBaseFiles
    Inherits MarshalByRefObject

    ' Startup stuff here...

End Class

更多信息

修改

  • 如果我将所有程序集复制到本地驱动器( C:)并从那里运行我的应用程序,它将正常工作。

有任何建议吗?

1 个答案:

答案 0 :(得分:1)

看起来你错过了一个参数或指向一个不可用的资源。

a)是否为应用程序设置了工作目录?

b)登录时用户是否可以使用工作目录?