【问题标题】:Visual Studio/ Asp.net / IIS Pathing HelpVisual Studio/Asp.net/IIS 路径帮助
【发布时间】:2010-12-19 18:34:37
【问题描述】:

我正在创建的网站存在一些严重的路径问题。我在 Windows Vista Home Premium 上使用带有 IIS7 的 Visual Studio 2008 IDE。这是一个网站项目,而不是 asp.net Web 应用程序(根据 Visual Studio)。

这就是问题所在。我使用 IIS 7 作为测试服务器,尽管 VS 2008 有自己的内置网络服务器。在我创建的以前的网站上,我使用了 VS 2008 测试服务器,一切都很好而且很漂亮,但是这个项目我严格使用 IIS 7。我遇到了大量的路径问题。例如

http://localhost/mywebsite/default.aspx

每当我尝试访问网站的根目录时,例如

<a href="/default.aspx" />

它转到“http://localhost/”,因此出现错误。当我尝试在服务器端代码上映射项目时,这真的搞砸了

Server.MapPath("/"); //Will not work in this configuration

我隐约记得 Visual Studio 中关于设置起始根路径的一些内容,但我不确定在哪里设置和/或它们是否是这个选项。我不确定是否需要在 IIS 7 或 Visual Studio 中进行配置更改。

此外,为了在 IIS 上(使用 Visual Studio)建立一个网站,我创建了一个新网站并将位置设置在我的本地主机 (HTTP) 和虚拟目录上。我设置正确了吗?

【问题讨论】:

    标签: c# asp.net iis url iis-7


    【解决方案1】:

    试试

    Server.MapPath("~/");
    

    【讨论】:

      【解决方案2】:
      <a href="~/default.aspx" runat="server" />
      

      感谢 runat="server" 标签,框架现在可以正确解析它。

      【讨论】:

        【解决方案3】:

        如果这是一个网站或 Web 应用程序项目,您可以在项目设置的 Web 选项卡上覆盖应用程序根路径。但是,这只告诉 Visual Studio 如何在设计/编译时解决 ~。您真的想在任何地方使用波浪号来引用您的应用程序的根目录。这样,无论是 IIS 中的网站还是作为虚拟目录运行,它都可以无缝运行。

        【讨论】:

          【解决方案4】:

          在 ASP .NET 中创建链接或引用 URI 时,请牢记以下几点。

          • 波浪号“~/”代表 应用程序的根目录。

          • 正斜杠“/”表示 URI 的绝对根。

          在处理虚拟目录中的应用程序时,应用程序根目录将是该虚拟目录的路径。如果您希望链接从应用程序根目录开始,请始终在它们前面加上 ~/.如果您需要链接到 URI 的根目录,您可以简单地使用正斜杠 /。

          【讨论】: