【问题标题】:WebResource.axd blank or not foundWebResource.axd 空白或未找到
【发布时间】:2009-04-08 15:12:22
【问题描述】:

我正在尝试以 .dll 格式导出控件库,以供办公室中的其他开发人员使用。

我最初创建的解决方案如下所示:

解决方案 1:
- Mri.Controls(类库)
- Mri.FmTool(网络应用)

Mri.FmTool 引用 Mri.Controls。

在 Mri.Controls 中,我有一些 javascript WebResources。 Mri.FmTool 似乎可以很好地阅读 WebResources,当 Mri.FmTool 网络应用程序运行时,我所有的 javascript 网络资源都会出现。

所以,现在我正在尝试创建一个简单的解决方案来使用 Mri.FmTool

解决方案 2:
- Mri.ConsumerTest(网络应用)

我采用了最新的 Mri.Controls.dll 并将其添加为对 Mri.ConsumerTest 应用程序的引用。 Mri.Controls 中的所有控件似乎都在 Mri.ConsumerTest 中工作。 Intellisense 工作正常,可以编译,没有问题。

但是,运行它时,大部分 WebResource.axd 文件都是空的,只是空白。一个 WebResource.axd 文件不是空白的,它只是说“找不到此资源。”

以下是“属性”窗口中 javascript 文件的属性:
构建操作:“嵌入式资源”
复制到输出目录:“始终复制”

我错过了什么步骤?

【问题讨论】:

  • 感谢您提出这个问题!我没有 same 问题,但我遇到了类似的问题。虽然不知道“构建操作:嵌入式资源”属性。谢谢!

标签: asp.net dll webresource.axd .net-assembly


【解决方案1】:

您可能缺少 [assembly:WebResource("YourNameSpace.YourFile.js", "text/javascript")] 属性。 WebResource.axd 需要该属性。您可以查看this KB 文章以获取有关此问题的更多信息。

【讨论】:

  • 我的程序集信息中已经有 [assembly: WebResource("Mri.Controls.Resources.Scripts.Core.js", "text/javascript")] ......
【解决方案2】:

资源是否设置为 DLL 的一部分?

打开解决方案 Mri.Controls 并查看您的 javascript 资源文件的属性。
我认为这就是问题所在。

【讨论】:

  • 我的 javascript 文件在 Mri.Controls 中具有以下属性 - 构建操作:嵌入式资源;复制到输出目录:总是复制
  • 谢谢。这是我的问题。旧的复活项目 - 由于某种原因,所有资源文件都重置为 Content 而不是 Embedded Resource。
【解决方案3】:

我注意到我的 WebResource CSS 文件已正确加载,但在新解决方案中的 WebResource 中未加载 Javascript。

因此,我没有使用用于注册 WebResources 的 System.Web.UI.ClientScriptManager,而是转而使用 System.Web.UI。 脚本管理器。现在文件从 ScriptManager.axd (而不是 WebResource.axd)中出来。这似乎解决了问题。

修复前的旧代码:

public class ScriptManagerExtension : System.Web.UI.ScriptManager
{
    protected override void OnInit(EventArgs e)
    {
        base.OnInit(e);
        Page.ClientScript.RegisterClientScriptResource(this, typeof(ScriptManagerExtension), "Mri.Controls.Resources.Scripts.Libraries.jQuery.js");
    }
}

上面的代码sn-p使用System.Web.UI.ClientScriptManager

修复后的新代码:

public class ScriptManagerExtension : System.Web.UI.ScriptManager
{
    protected override void OnInit(EventArgs e)
    {
        base.OnInit(e);
        RegisterClientScriptResource(this, typeof(ScriptManagerExtension), "Mri.Controls.Resources.Scripts.Libraries.jQuery.js");
    }
}

上面的代码sn-p使用System.Web.UI.ScriptManager

据我了解,ClientScriptManager 是在 2.0 中引入的。我相信 ScriptManager 是新改进的 3.5 脚本管理方式,具有更多功能。

/耸耸肩

【讨论】:

  • 我不确定我是否遵循,您可以发布一个小代码 sn-p 您的意思吗?
  • 相关部分是一个 static 函数:ScriptManager.RegisterClientScriptResource() - 我花了一段时间才弄明白。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多