【问题标题】:Can't load text file when debugging locally本地调试时无法加载文本文件
【发布时间】:2014-12-09 04:41:52
【问题描述】:

我正在创建一个网页,它解析文本文件并将“重要”行号输出为用户可以单击的超链接,然后转到输入文本文件的行号。自然,这意味着通过单击超链接,浏览器必须导航到文本文件。问题在于那部分。单击超链接时,没有任何反应。没有错误,什么都没有。

下面是相关的cshtml代码:

<pre>
    @results

    @for (int i = 0; i < ViewBag.links.Count; i++)
    { 
        if (ViewBag.links[i].isHyperLink == true) 
        {
            {<a href="@ViewBag.links[i].url">@ViewBag.links[i].text</a>} //HYPERLINKS PRINTED TO PAGE HERE
        }  
        if (ViewBag.links[i].isHyperLink == false)
        {
            @ViewBag.links[i].text;
        }
    }
</pre>

以下是相关的 C# 代码:

        MatchCollection mc = Regex.Matches(output, @", [0-9]+?\)"); //find matches in txt file
        List<TextandHyperlink> links = new List<TextandHyperlink>(); //create list of hyperlink objects
        TextandHyperlink tempLink = new TextandHyperlink(); //create 

        int length;
        string temp = "";

        // Get line numbers
        for (int i = 0; i < mc.Count; i++)
        {
            if (i > 0)
                tempLink = new TextandHyperlink();

            length = mc[i].Value.Length;
            temp = mc[i].Value.Substring(2, length - 3);
            tempLink.text = temp;
            tempLink.url = relativePath; //ASSIGN PATH TO TXT FILE HERE
            tempLink.isHyperLink = true;
            links.Add(tempLink);
        }
        ViewBag.links = links;

我已经验证 relativePath 是我电脑上文本文件的正确路径。以防万一,这是我正在使用的路径示例: relativePath = C:\Users\USER\PROJECT\Website\Website\Home\UploadFiles~/App_Data/Uploads/bloop.txt

提前感谢您的帮助!

编辑:这是生成的html:

--------
Summary
--------
Version             23.00.00.00
Error               2   at lines    (09/02/2014-06:13:32.607, <a href="C:\Users\USER\PROJECT\Website\Website\Home\UploadFiles~/App_Data/Uploads/bloop.txt">5662</a>); (09/02/2014-06:15:10.756, <a href="C:\Users\USER\PROJECT\Website\Website\Home\UploadFiles~/App_Data/Uploads/bloop.txt">7397</a>)
Timeouts                0
Inits               1   at lines    (09/02/2014-06:12:59.900, <a href="C:\Users\USER\PROJECT\Website\Website\Home\UploadFiles~/App_Data/Uploads/bloop.txt">2</a>)

【问题讨论】:

  • 发布生成的 HTML。错误可能在那里......
  • 你试过 Path.Combine 吗?用于设置路径。
  • 我已将生成的 html 作为编辑发布。是的,我正在使用 Path.Combine 创建 relativePath。
  • 如果不使用 file:// 协议,您将无法链接到文件系统样式的路径,即 URL 必须是 file://C/Users...。然而,即便如此,由于浏览器与本地文件系统的集成,它也只能在本地运行。远程,您需要通过您的网络服务器使用相对于您网站的文档根目录的实际 URL 来提供文件。
  • 如果不使用 file:// 协议,您将无法链接到文件系统样式的路径,即 URL 必须是 file://C/Users...。然而,即便如此,由于浏览器与本地文件系统的集成,它也只能在本地运行。远程,您需要通过您的网络服务器使用相对于您网站的文档根目录的实际 URL 来提供文件。

标签: c# razor


【解决方案1】:

如果您确定您的路径和文件名是正确的,那么 权限 将是另一个问题。例如,在 Windows Server 机器上,您必须确保运行 exe / 网页 / 操作(可能是本地帐户、网络服务帐户等)的同一“用户”具有 至少对该文件的明确读取权限。从网页访问文件故意变得困难,因为必须有安全机制,权限就是其中之一。

(请注意 - 在您的错误消息中 - 您的文件路径确实看起来很狡猾...浮动的 tilda 很可疑)

【讨论】:

  • 在阅读了您的评论后,我将文本文件移动到了一个当然没有权限限制的文件夹(当然还更新了 relativePath),但我仍然遇到同样的问题。新文件路径中也没有 tilda,所以我猜它是别的东西。我读过在 localhost 上加载文件比实际托管网站时“更难”。不过,我找不到一个关于为什么或如何解决它的好答案。
  • 您希望用户在单击链接时打开文件吗?我不认为 href 是足够的信息。您是否尝试过 file:/// 作为前缀?尝试将您的链接复制到浏览器中,看看会发生什么
  • 抱歉只是一个辅助,文件链接可能很棘手 - 并且对每个应用程序都很敏感。最好的办法是先手动生成链接,然后在浏览器中验证,然后是简单的网页,然后是代码。
  • 好的,我已将文件路径更改为不包含 tilda。当我直接将其复制到浏览器中时,它可以工作。但是,当我将相同的路径输入到 href 时,它仍然什么也不做。我尝试将 file:/// 前缀也无济于事。你的意思是href没有足够的信息?
  • @GrantBall 试试这个链接,他们有很好的例子说明如何构造 href 以包含 file://// ...stackoverflow.com/questions/1474702/…
猜你喜欢
  • 2018-05-08
  • 2016-02-04
  • 1970-01-01
  • 2021-08-30
  • 2019-05-30
  • 1970-01-01
  • 2013-01-30
  • 1970-01-01
相关资源
最近更新 更多