【发布时间】:2009-11-18 16:28:35
【问题描述】:
我正在使用 ASP.Net 和表单身份验证。当用户被定向到登录页面时,我收到一个 JavaScript 错误:
消息:语法错误行:3 字符:1 代码:0 URI: http://localhost:49791/login.aspx?ReturnUrl=%2fWebImageButton.js
这是因为我在单独的 Web 控制项目控件中使用了自定义图像按钮,该控件向页面添加了 ScriptReference:
public class WebImageButton : LinkButton, IScriptControl, IButtonControl
{
protected override void OnPreRender(EventArgs e)
{
// Link the script up with the script manager
ScriptManager scriptManager = ScriptManager.GetCurrent(this.Page);
if (scriptManager != null)
{
scriptManager.RegisterScriptControl(this);
scriptManager.Scripts.Add(new ScriptReference("<snip>.WebImageButton.js", "<snip>"));
}
base.OnPreRender(e);
}
}
如果我将以下规则添加到我的 Web.Config 中,则文件已成功导入:
<location path="WebImageButton.js">
<system.web>
<authorization>
<allow users="*" />
</authorization>
</system.web>
</location>
这不是很好,因为我有许多自定义控件做同样的事情,而且我并不特别喜欢单独验证他们的每个 js 文件。
我有没有办法声明所有导入的脚本引用都应该被允许?我尝试授权 WebResource.axd 文件以防万一,但页面本身(在呈现时)物理上引用了 WebImageButton.js 文件。
理想情况如下:
<location path="My.WebControlLibraryProject.Controls">
<system.web>
<authorization>
<allow users="*" />
</authorization>
</system.web>
</location>
有没有办法在不列出每个文件的情况下实现这一点?
编辑:为了清楚起见,这些脚本文件在另一个项目中,而不是在我的实际 Web 项目中。我知道如何声明目录路径的位置路径以一次性包含大量文件,但我不知道如何验证来自嵌入式资源的自动脚本引用。
【问题讨论】:
标签: asp.net javascript forms-authentication