【问题标题】:ASMX dll not loaded when in subfolder在子文件夹中未加载 ASMX dll
【发布时间】:2017-04-14 20:19:22
【问题描述】:

我正在使用 ASP.NET (3.5) 网络表单。我有一个包含 .ascx 文件和 .asmx 文件的网站插件。我的文件夹结构如下所示:

  • MainWebSiteFolder
    • bin
    • 插件
      • 插件1
        • 插件1.ascx
        • 插件1.asmx
          • Plugin1.dll

在运行时,主网站(使用 web.config 标签)可以找到 Plugin1.dll 并将 Plugin1.ascx 加载到网页中。 Plugin1.ascx 包含调用 Plugin1.asmx 的 javascript 代码,但 IIS 无法找到 Plugin1.asmx 代码隐藏,因为它在主网站的 bin 文件夹而不是插件的 bin 文件夹中寻找 Plugin1.dll。

尝试通过 URL (http://MyWebSite/Plugins/Plugin1/Plugin1.asmx) 直接访问 asmx 会导致以下错误:

RunTime Error

Could not create type 'MyNamespace.Plugin1'.

Line 1:  <%@ WebService Language="C#" CodeBehind="Plugin1.asmx.cs" Class="MyNamespace.Plugin1" %>

有几个类似的问题,但没有一个能解决我的问题,因为我只是拥有插件,所以我不想将 plugin.dll 复制到主网站的 bin 文件夹中 (因为,当主网站升级时,它的bin文件夹被清空了。我无法控制这个)。我也不想让 asmx 成为自己独立的 IIS 应用程序,因为它需要能够与主网站共享会话。

我可以做些什么来将 asmx 文件与其子文件夹中的 dll 连接起来吗?

【问题讨论】:

  • 除了see this下面的回答。我还没有尝试过,所以测试一下 - re:看来你需要添加&lt;%@ Assembly Name="Foo1" %&gt;&lt;%@ Import Namespace="FooNamespace" %&gt;。嗯……

标签: c# asp.net asmx


【解决方案1】:

检查是否将 web.config 添加到插件或您的 Plugin1 目录 (web.config inheritance),其中包含程序集探测元素有效(请参阅 MSDN 上的 probing Element)。

【讨论】:

  • 我的 Plugin1 目录已经有一个 web.config,所以我尝试添加 。没有运气。
  • 似乎运行时元素无法在 web.config 中继承,尽管我无法找到这方面的文档。如果您将运行时/探测元素添加到应用程序的 web.config 中,您的 dll 将被找到,但我想这不是一个选项。
猜你喜欢
  • 1970-01-01
  • 2012-04-02
  • 2011-08-13
  • 2015-09-05
  • 1970-01-01
  • 2017-12-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多