首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >文件名的最大ScriptBundle IncludeDirectory长度?

文件名的最大ScriptBundle IncludeDirectory长度?
EN

Stack Overflow用户
提问于 2014-08-21 20:06:53
回答 1查看 457关注 0票数 0

启用搜索子目录时,ASP.NET的ScriptBundle .IncludeDirectory方法中是否存在最大文件名长度?

当我包含一个具有较长描述名的文件,然后启动该项目时,我的VisualStudio2013Professional将开始加载所有内容,但一旦它开始加载.js文件,VS就会挂起,而不会在浏览器中加载网站。但是,当我在我使用过的.js文件夹中修剪较长的.IncludeDirectory文件名时,它似乎工作得很好。但我可以走了。还有其他人遇到过这种行为吗?你是怎么修好的?

简化示例

代码语言:javascript
复制
public static void RegisterBundles(BundleCollection bundles)
{
    bundles.Add(new ScriptBundle("~/bundles/angularapp")
         .IncludeDirectory("~/AngularApp", "*.js", true));
}  

文件夹

  • AngularApp
    • 下一个文件夹
      • 包含SuperLongNameOfFileToTellMeWhatItDoes.js --不起作用
      • 包含ShortName.js -似乎有效

显然,我的项目包含了比这更多的文件和更深的文件结构。但是,我正在尝试从显式地将每个.js文件包含在一个非常大的.Include块中转换为.Include

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-11-06 11:44:47

我有这样的结构:

我试着用这个:

代码语言:javascript
复制
    bundles.Add(new ScriptBundle("~/bundles/myScripts").Include(
        "~/Scripts/ng-google-chart.js",
        "~/Scripts for myapp/my_scripts.js"
        )               
        // WARN: this one fail
        .IncludeDirectory("~/Scripts for myapp/Angular", "*.js", true)
    );

但失败了。如果我在单独的行中使用IncludeDirectory,它将失败:

代码语言:javascript
复制
@Scripts.Render("~/bundles/myscripts")

角目录只包含.js文件,没有空目录,除了下划线之外,名字中也没有奇怪的字符。

我使用没有searchSubdirectories参数的.IncludeDirectory sintax来解决问题,这是对每个子目录的调用.

代码语言:javascript
复制
ScriptBundle myBundle = bundles.GetBundleFor("~/bundles/myScripts") as ScriptBundle;
myBundle.IncludeDirectory("~/Scripts for myapp/Angular/controllers", "*.js");
myBundle.IncludeDirectory("~/Scripts for myapp/Angular/directives", "*.js");
[...]

它工作,所以路径和文件是正确的。它只是在子目录中搜索失败的方法。

我猜你是在打电话

代码语言:javascript
复制
BundleConfig.RegisterBundles(BundleTable.Bundles);

在Application_Start of Global.asax .

若要查找错误,请尝试附加调试器,并在该调用之前的某个位置放置一个断点。您可能会有一个System.Web.HttpException (实际上每个子目录都有一个),上面写着:

用于文件监视的无效文件名:“到应用程序的路径\mywebapp\myapp的脚本\角\控制器”。失败的常见原因包括:-文件名不是有效的Win32文件名。-文件名不是绝对路径。-文件名包含通配符。-指定的文件是一个目录。-不准进入。

在我的例子中,这些原因似乎都不成立,我可以使用该方法注册子文件夹的内容,而不需要“子文件夹搜索”。(小费)要使Application_Start再次触发,只需在web.config中添加/删除空行即可。)

请注意,此异常不会阻止ASP引擎,在我的示例中,页面是在浏览器中呈现的,您只是没有看到错误。我注意到了这一点,因为在Application_Start中,我会执行其他操作,而它们不会被执行。

我不知道这个错误的真正原因,但这就是你如何找到它和对我有用的解决办法。

小费。为了排除茉莉花测试文件,我使用以下(在其他命令之后):bundles.IgnoreList.Ignore("*_jasmine.js",OptimizationMode.Always);

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25435030

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档