asp.net 中的混合模式程序集加载
Mixed mode assembly loading in asp.net
我有一个引用混合模式 dll 的 asp.net 网络服务。混合模式程序集引用的本机 dll 位于添加到 SYSTEM PATH 的目录中。
我想从 SYSTEM PATH 中删除本机 dll 的目录,所以我将所有本机 dll 复制到 webservice 的 bin 目录,但我得到文件未找到异常。
asp.net 是否不在 webservice 的 bin 目录中查找本机 dll?有没有办法动态设置系统路径?我怎样才能让它工作。
如果有人遇到类似情况,我就是这样做的,以便能够从不在这些位置的位置加载混合模式程序集:
- 应用程序加载的目录。在 ASP.Net 的情况下,对于 IIS 6,这将解析为 %windir%\Microsoft.Net\Framework\v###\ 或 %windir%\system32\inetsrv。
- 当前目录。在 ASP.Net 的情况下,对于 IIS 6,这将解析为 %windir%\System32\inetsrv。如果使用内置 Web 服务器,这将解析为 C:\Program Files\Microsoft 下的路径Visual Studio8.
- Windows系统目录。使用 GetSystemDirectory 函数获取此目录的路径。
- Windows 目录。使用 GetWindowsDirectory 函数获取该目录的路径。
- PATH 环境变量中列出的目录。
我将混合模式程序集上的本机 dll 设置为延迟加载。然后我按照 http://blogs.msdn.com/b/jorman/archive/2007/08/31/loading-c-assemblies-in-asp-net.aspx
中的选项 2b
我只需要对选项 2b 进行一点小调整。它说要更新 Global.asax 中的 "Application_Start" 方法,但我必须更新 "Application_BeginRequest" 方法才能使其与我的网络服务一起使用。
我有一个引用混合模式 dll 的 asp.net 网络服务。混合模式程序集引用的本机 dll 位于添加到 SYSTEM PATH 的目录中。
我想从 SYSTEM PATH 中删除本机 dll 的目录,所以我将所有本机 dll 复制到 webservice 的 bin 目录,但我得到文件未找到异常。
asp.net 是否不在 webservice 的 bin 目录中查找本机 dll?有没有办法动态设置系统路径?我怎样才能让它工作。
如果有人遇到类似情况,我就是这样做的,以便能够从不在这些位置的位置加载混合模式程序集:
- 应用程序加载的目录。在 ASP.Net 的情况下,对于 IIS 6,这将解析为 %windir%\Microsoft.Net\Framework\v###\ 或 %windir%\system32\inetsrv。
- 当前目录。在 ASP.Net 的情况下,对于 IIS 6,这将解析为 %windir%\System32\inetsrv。如果使用内置 Web 服务器,这将解析为 C:\Program Files\Microsoft 下的路径Visual Studio8.
- Windows系统目录。使用 GetSystemDirectory 函数获取此目录的路径。
- Windows 目录。使用 GetWindowsDirectory 函数获取该目录的路径。
- PATH 环境变量中列出的目录。
我将混合模式程序集上的本机 dll 设置为延迟加载。然后我按照 http://blogs.msdn.com/b/jorman/archive/2007/08/31/loading-c-assemblies-in-asp-net.aspx
中的选项 2b我只需要对选项 2b 进行一点小调整。它说要更新 Global.asax 中的 "Application_Start" 方法,但我必须更新 "Application_BeginRequest" 方法才能使其与我的网络服务一起使用。