特别:
Nancy 0.21.1Nancy.VIEwEngines.Razor 0.21.1Microsoft Owin.SelfHost 2.0.1
我有一个带有以下脚本参考的HTML页面
<script src="Scripts/jquery-1.6.4.min.Js"></script>
如果我提出以下请求(请注意尾随斜杠)
http://localhost:3456/log/
正确返回HTML页面并发出以下脚本请求
http://localhost:3456/log/Scripts/jquery-1.6.4.min.Js
这是正确的行为.
如果我然后发出此请求(请注意,没有斜杠)
http://localhost:3456/log
正确返回了HTML页面,但是发出了不同的脚本请求.
http://localhost:3456/Scripts/jquery-1.6.4.min.Js
这会失败,因为它是错误的URL.该脚本需要在/ log下
Nancy允许你在处理之前更改URL,所以我尝试添加尾部斜杠,如果它丢失但是这不会改变任何东西(无论如何看起来像是Hack)
我最好还是让它工作而不必担心拖尾斜线.如果失败,我想我需要一种方法来修改初始响应,以便返回带有斜杠的http referrer标头?但是,如何做到这一点并不明显.
注:我的设置不是标准的Nancy.有一些自定义静态内容约定和视图位置约定用于使它按我想要的方式工作.一切正常,除非缺少尾部斜杠.
这个线程似乎谈论同样的问题,但对于ASP.NET
http://forums.asp.net/t/1897093.aspx?Trailing+Slash+Nightmare
更新1
正如@AndreD所建议的,使用
/log/Scripts/jquery-1.6.4.min.Js
是否适用于这两种情况,但“log”是一个变量前缀,不能进行硬编码.一个HTML助手可能是一个选项,这是我目前正在寻找解决问题的方法
解决方法 因此,解决方案是创建一个帮助程序,以创建正确的脚本路径/log/Scripts/jquery-1.6.4.min.Js
助手类扩展
*Somenamespace*public static class UrlHelpers{ public static string Script<TModel>(this Nancy.VIEwEngines.Razor.UrlHelpers<TModel> Self,string Script) { var rootPath = Self.RenderContext.Context.Request.Path.TrimEnd('/'); var scriptPath = string.Format("{0}/Scripts/{1}",rootPath,Script); return scriptPath; }}
视图:
@using Somenamespace@inherits Nancy.VIEwEngines.Razor.NancyRazorVIEwBase ... ... <script src=@Url.Script("jquery-1.6.4.min.Js")></script> <script src=@Url.Script("jquery.signalR-2.0.0.min.Js")></script>总结
以上是内存溢出为你收集整理的c# – 请求错误的脚本URL全部内容,希望文章能够帮你解决c# – 请求错误的脚本URL所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)