asp.net-超链接不工作

asp.net-超链接不工作,asp.net,file,hyperlink,Asp.net,File,Hyperlink,执行此代码时,会生成超链接,但它们不起作用。 当我点击它们时,什么也没有发生 请提供帮助。在ASP.NET中,超链接必须是URL,而不是计算机上的文件夹 如果您的文件位于站点中,请尝试服务器.MapPath这是由于浏览器中的安全限制。如果生成“文件://”链接,则该链接与用户的文件系统相关 理论上,如果浏览器允许这些类型的链接,攻击者可以远程发现有关用户文件系统的信息。因此,现代浏览器不允许这种类型的链接 不幸的是,这并没有很好的文档记录,大多数浏览器都允许链接,只是删除了行为——所以当你点击它

执行此代码时,会生成超链接,但它们不起作用。 当我点击它们时,什么也没有发生


请提供帮助。

在ASP.NET中,超链接必须是URL,而不是计算机上的文件夹


如果您的文件位于站点中,请尝试服务器.MapPath

这是由于浏览器中的安全限制。如果生成“
文件://
”链接,则该链接与用户的文件系统相关

理论上,如果浏览器允许这些类型的链接,攻击者可以远程发现有关用户文件系统的信息。因此,现代浏览器不允许这种类型的链接

不幸的是,这并没有很好的文档记录,大多数浏览器都允许链接,只是删除了行为——所以当你点击它们时,什么也不会发生。也没有什么好的解决办法

进一步讨论请参见我的问题。

查看问题。该解决方案可能也适用于您。

我发现(在重定向到您自己的另一个网页的情况下)使用以下方法: compontent.NavigateUrl=“~/page.aspx”

与此相反:

compontent.NavigateUrl=server.MapPath(“路径”)

为我工作。server.MapPath创建了一个文件://链接,因此浏览器不允许该链接


希望这对某人有所帮助,在某些情况下它不会起作用,但它满足了我的个人需求。

不,我的文件不在网站中。它可能在系统中的任何地方。@Akshay:您的代码在服务器端执行,而您试图让它在客户端工作?你应该用别的东西;ASP.NET不是你想要做的事情的工具。@Randolpho:但当我们给出网站文件夹中任何文件的url时,它就工作了。当hyperlink的navigateurl指向系统中不在“网站”文件夹中的任何外部文件时,就会出现问题。@Akshay:没错!如果希望IIS提供该文件,则该文件必须存在。如果您只提供客户端的本地文件路径,他们将尝试在其计算机上查找文件,而不是在服务器上查找文件。
protected void Button1_Click(object sender, EventArgs e)
{
    System.IO.DirectoryInfo dir = new System.IO.DirectoryInfo(@"C:\Documents and Settings\Admin\Desktop\New Folder\"+TextBox1.Text);
    foreach (System.IO.FileInfo file in dir.GetFiles())
    {
        HyperLink h = new HyperLink();
        h.NavigateUrl = "file:///c:/Documents and Settings/Admin/Desktop/New Folder/" + TextBox1.Text + "/" + file.Name;


        h.Text = file.Name;
        PlaceHolder1.Controls.Add(h);
    }


}