【问题标题】:Nopcommerce Plugin View: CSS and JavaScript Files Not Found (404)Nopcommerce 插件视图:未找到 CSS 和 JavaScript 文件 (404)
【发布时间】:2017-04-01 13:41:02
【问题描述】:

一点背景
我们一直在就如何与 nopCommerce 合作进行一些重组,以保持事情的可维护性。以前,我们一直使用主题系统来处理我们的视图、脚本、css 和图像。然而,我们现在将所有这些都转移到名为“Nop.Plugin.Wca.WE”的主插件中,这对我来说是一个非常奇怪的问题。

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

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)

路径正确且文件存在
这会让您想到的第一件事是“路径肯定有问题”,但是,事实并非如此,因为我已经在同一个文件中使用以下代码验证了这一点:

@HttpRuntime.AppDomainAppPath

这个输出:
"D:\TFS_Clean2\WCA B2B 在线商店\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”,因此该文件确实存在于这个确切位置。

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

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

我的尝试
-我尝试了不同的方法变体“AddCssFileParts()”、“AddScriptParts()”等。这些都没有效果。

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

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

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

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

【问题讨论】:

    标签: javascript css asp.net-mvc razor nopcommerce


    【解决方案1】:

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

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

    我相信这是为了限制对 Views 的访问,但由于它在插件的配置文件中,我猜它也限制了其他文件,虽然很奇怪,就像我在帖子中提到的那样,我能够访问意见很好,所以我不太确定那里发生了什么。

    【讨论】:

    • 恭喜朋友解决了自己的问题!
    猜你喜欢
    • 1970-01-01
    • 2018-02-04
    • 2014-08-04
    • 2020-12-30
    • 2015-02-27
    • 2020-10-02
    • 2016-05-22
    • 2013-06-23
    • 1970-01-01
    相关资源
    最近更新 更多