【问题标题】:Mixed mode assembly loading in asp.net在 asp.net 中加载混合模式程序集
【发布时间】:2015-08-03 17:28:04
【问题描述】:

我有一个引用混合模式 dll 的 asp.net 网络服务。混合模式程序集引用的本机 dll 位于添加到 SYSTEM PATH 的目录中。

我想从系统路径中删除本机 dll 的目录,所以我将所有本机 dll 复制到 webservice 的 bin 目录,但我得到文件未找到异常。

asp.net 不会在 webservice 的 bin 目录中查找本机 dll 吗?有没有办法动态设置系统路径?我怎样才能让它工作。

【问题讨论】:

  • 你看过这个帖子吗:stackoverflow.com/questions/126331/…
  • 是的,大卫,我正在复制 dll。 Web 服务的 bin 目录包含所有本机 dll,但没有找到它。如果我将所有 dll 放在一个单独的目录中并将该目录添加到系统路径中,那么一切正常。

标签: asp.net mixed-mode


【解决方案1】:

如果有人遇到类似情况,我就是这样做的,以便能够从不在这些位置的位置加载混合模式程序集:

  1. 加载应用程序的目录。对于 ASP.Net,这将解析为 %windir%\Microsoft.Net\Framework\v###\ 或 %windir%\system32\inetsrv 用于 IIS 6。
  2. 当前目录。对于 ASP.Net,这将解析为 IIS 6 的 %windir%\System32\inetsrv。如果使用内置 Web 服务器,则解析为 C:\Program Files\Microsoft Visual Studio 8 下的路径。
  3. Windows 系统目录。使用 GetSystemDirectory 函数获取该目录的路径。
  4. Windows 目录。使用 GetWindowsDirectory 函数获取该目录的路径。
  5. 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”方法才能使其与我的 web 服务一起使用。

【讨论】:

    猜你喜欢
    • 2015-06-09
    • 1970-01-01
    • 2011-06-20
    • 2011-03-20
    • 2011-03-11
    • 2012-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多