Nopcommerce 插件视图:未找到 CSS 和 JavaScript 文件 (404)

Nopcommerce Plugin View: CSS and JavaScript Files Not Found (404)

一点背景知识
我们一直在对我们如何与 nopCommerce 合作进行一些重组,以保持事情更易于维护。以前,我们一直使用主题系统来处理我们的视图、脚本、css 和图像。然而,我们现在正在将所有这些移动到我们的主要插件 "Nop.Plugin.Wca.WE",这对我来说是一个非常奇怪的问题。

我的问题
我已经移动了所有内容并更新了所有引用、路径等,以便一切正常,但这只是部分情况。我的控制器能够很好地 return 视图,但是视图不能添加任何 CSS 或 JavaScript 文件,因为它在浏览器的检查器中显示 "cannot be found (404)"。我保留了我在 "Themes" 文件夹(它工作的地方)时使用的完全相同的语法,我只更改了路径:

Html.AppendCssFileParts("~/Plugins/Nop.Plugin.Wca.WE/Contents/css/ProductDetails/styles.css");

Html.AppendScriptParts("~/Plugins/Nop.Plugin.Wca.WE/Scripts/ProductDetails/ProductDetailsTooltips.js");

错误信息:

http://localhost:15636/Plugins/Nop.Plugin.Wca.WE/Contents/css/ProductDetails/styles.css Failed to load resource: the server responded with a status of 404 (Not Found)

http://localhost:15636/Plugins/Nop.Plugin.Wca.WE/Scripts/ProductDetails/ProductDetailsTooltips.js Failed to load resource: the server responded with a status of 404 (Not Found)

路径正确且文件存在
这会让您想到的第一件事是 "well there must be something wrong with the path",但是,事实并非如此,因为我已经在同一文件中使用以下代码验证了这一点:

@HttpRuntime.AppDomainAppPath

这输出:
"D:\TFS_Clean2\WCA B2B Online Store\nopCommerce_B2B_3.80\Presentation\Nop.Web\ "

这证明根 "~/" 实际上如预期的那样在 Nop.Web 中。

还有:

@File.Exists(@"D:\TFS_Clean2\WCA B2B Online Store\nopCommerce_B2B_3.80\Presentation\Nop.Web\Plugins\Nop.Plugin.Wca.WE\Scripts\ProductDetails\ProductDetailsTooltips.js")

输出 "True",所以文件确实存在于这个确切位置。

我觉得还值得一提的是,此视图文件中还有许多其他调用 return 使用相同路径逻辑的部分视图,这些都按预期工作,这是一个示例:

@Html.Partial("~/Plugins/Nop.Plugin.Wca.WE/Views/ProductDetails/_ProductPrice.cshtml", Model.ProductPrice)

我试过的
-我尝试了不同的方法变体 "AddCssFileParts()"、"AddScriptParts()" 等。其中 None 有效果。

-文档中有一小部分展示了如何添加这些使用了一些不同语法的文件:http://docs.nopcommerce.com/display/nc/Adding+CSS+and+JS+resource+files+into+nopCommerce+Plugin
我已经尝试过,但行为没有任何变化。

-我试过以一些小的方式改变路径,例如删除“~/”和删除文件扩展名。

-我刷新了浏览器的缓存。

这似乎应该是一个小问题,但我已经排查了几个小时都无济于事。希望这里有人可以为我阐明情况。非常感谢任何帮助。

我解决了这个问题,插件的 web.config 文件中有一个设置阻止了对文件的访问:

<handlers>
      <remove name="BlockViewHandler"/>
      <add name="BlockViewHandler" path="*" verb="*" preCondition="integratedMode" type="System.Web.HttpNotFoundHandler" />
</handlers>

我认为这是为了限制对视图的访问,但由于它在插件的配置文件中,我猜它也限制了其他文件,尽管很奇怪,就像我在 post 中提到的那样,我能够很好地访问视图,所以我不太确定那里发生了什么。