无法在 ASP.NET 应用程序中使用第三方 DLL,但可以在 Windows Forms .NET 应用程序中使用
Unable to use a 3rd party DLL in an ASP.NET application, but works from a Windows Forms .NET application
我们有一个第 3 方应用程序,它以 DLL 的形式提供 SDK,可用于开发连接到其服务的自定义应用程序。 DLL 与它所依赖的一堆其他 DLL 一起存在于第 3 方应用程序的目录中。 SDK 指南提供了通过 Visual Studio 创建测试应用程序的说明,它说要添加对 SDK DLL 的引用,并将 Copy Local
设置为 False
。我创建了一个测试 Windows Forms .NET 应用程序,并按照说明添加了对 DLL 的引用,一切正常。但是,在 ASP.NET 应用程序中引用 DLL 会导致依赖的第 3 方 DLL 之一出现 FileNotFoundException
异常。
作为实验,我尝试将对有问题的 DLL 的引用添加到我的项目中,并将 Copy Local
设置为 False
,但出现了同样的错误。将 Copy Local
设置为 True
它会更进一步,但随后在另一个 DLL 上失败。无论 Copy Local
设置如何,添加对该 DLL 的引用都会失败。
我认为这些问题与 "standard" .NET 应用程序加载程序集的方式与 ASP.NET 应用程序之间的差异有关,但我不太确定应该如何解决这个问题。
是否有在 ASP.NET 应用程序中引用第 3 方 DLL(及其依赖项)而不将它们放入 GAC 或应用程序的 bin 目录的正确方法?
ASP.NET IIS 上的 Web 应用程序 运行 在会话 0 中使用有限的资源,与 WinForms 应用程序 运行 在您的用户会话中使用更多的权限和资源相比。
它们本质上是完全不同的环境,因此除非此类库的供应商声称 ASP。NET/IIS 支持,否则您应该简单地假设它不兼容,并且应该避免。
你应该注意到,即使是微软自己的技术(办公自动化,System.Drawing
等)也只支持WinForms,而不是ASP.NET。
我们有一个第 3 方应用程序,它以 DLL 的形式提供 SDK,可用于开发连接到其服务的自定义应用程序。 DLL 与它所依赖的一堆其他 DLL 一起存在于第 3 方应用程序的目录中。 SDK 指南提供了通过 Visual Studio 创建测试应用程序的说明,它说要添加对 SDK DLL 的引用,并将 Copy Local
设置为 False
。我创建了一个测试 Windows Forms .NET 应用程序,并按照说明添加了对 DLL 的引用,一切正常。但是,在 ASP.NET 应用程序中引用 DLL 会导致依赖的第 3 方 DLL 之一出现 FileNotFoundException
异常。
作为实验,我尝试将对有问题的 DLL 的引用添加到我的项目中,并将 Copy Local
设置为 False
,但出现了同样的错误。将 Copy Local
设置为 True
它会更进一步,但随后在另一个 DLL 上失败。无论 Copy Local
设置如何,添加对该 DLL 的引用都会失败。
我认为这些问题与 "standard" .NET 应用程序加载程序集的方式与 ASP.NET 应用程序之间的差异有关,但我不太确定应该如何解决这个问题。
是否有在 ASP.NET 应用程序中引用第 3 方 DLL(及其依赖项)而不将它们放入 GAC 或应用程序的 bin 目录的正确方法?
ASP.NET IIS 上的 Web 应用程序 运行 在会话 0 中使用有限的资源,与 WinForms 应用程序 运行 在您的用户会话中使用更多的权限和资源相比。
它们本质上是完全不同的环境,因此除非此类库的供应商声称 ASP。NET/IIS 支持,否则您应该简单地假设它不兼容,并且应该避免。
你应该注意到,即使是微软自己的技术(办公自动化,System.Drawing
等)也只支持WinForms,而不是ASP.NET。