加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 请求错误的脚本URL

发布时间:2020-12-15 21:58:31 所属栏目:百科 来源:网络整理
导读:我使用Self Hosting / OWIN和Razor视图引擎运行Nancy 特别: 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 如果我提出以下请求(请注意尾
我使用Self Hosting / OWIN和Razor视图引擎运行Nancy

特别:

Nancy 0.21.1
Nancy.ViewEngines.Razor 0.21.1
Microsoft 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>

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读