【问题标题】:server.mappath resolve referenced file path to relative dirserver.mappath 将引用的文件路径解析为相对目录
【发布时间】:2016-04-22 15:47:37
【问题描述】:

在我的 mvc 应用程序中,我正在尝试提供这样的 html 页面

return File(Server.MapPath("~/Documentation/" + decoded["version"].ToString().Trim() + "/" + "index.htm"), "text/html");

入口点 index.htm 包含一些 js 脚本。

<script type="text/javascript" src="./whver.js"></script>

即使我指定了相对 url,包含的脚本的路径也会解析到应用程序根目录。

指定绝对路径有效,但由于动态生成的目录名称,我需要脚本来引用相对位置。

我了解我提供的信息不足。 我认为正在发生的事情是 .htm 文件是从 Index 控制器返回的,它的路由是应用程序根目录。这就是为什么相对路径是这样解析的。

【问题讨论】:

  • 请说明您获得/想要的网址。 “./whver.js”确实是相对于当前页面的 url - 所以不太清楚你期望它解析到什么。
  • 旁注:MVC 标签是针对 MVC 设计模式问题的——据我所见,它与您的帖子完全无关。可能你的意思是asp.net-mvc
  • 我希望它能够解析为文档下的动态生成的文件夹,在我的例子中是 /Documentation/791/whver.js 但由于某种原因我得到了 localhost/whver.js
  • 听起来您希望浏览器知道服务器如何呈现页面。我认为您需要花一些时间来了解服务器上运行的代码/功能以及来自浏览器的内容...在帖子的当前状态下,无法提供合理的答案(实际上,页面实际上已呈现很明显根据您暗示的拼图,在“/page.html”之类的东西上-您必须在帖子中对其进行编辑,然后才能有人提供答案)

标签: c# .net path server.mappath


【解决方案1】:

我希望如果您将路径从相对更改为绝对会更容易。绝对路径以斜杠 - '/' 开头,并显示您网站的根点。我的意思是当您访问 website.com/index.html 时,页面的绝对路径是 /index.html。

下一个代码对我有用。 public ActionResult Index() { using (var streamRead = System.IO.File.OpenRead( System.IO.Path.Combine( Server.MapPath("~/Documents"), "index.html"))) { return File(streamRead, "text/html"); } }

和html页面: <!DOCTYPE html> <html> <head> <title></title> <meta charset="utf-8" /> </head> <body> <script type="text/javascript" src="/Scripts/jquery-1.10.2.js" ></script> <script> console.dir("jquery version: " + jQuery.fn.jquery); </script> </body> </html>

【讨论】:

  • 在我的问题中,我指定绝对路径有效,但我有一个动态生成的文件夹
猜你喜欢
  • 2014-02-01
  • 1970-01-01
  • 2013-08-26
  • 1970-01-01
  • 2010-10-03
  • 1970-01-01
  • 2010-12-11
  • 1970-01-01
相关资源
最近更新 更多