【问题标题】:Why is a Web Site project not serving pages except through IIS?为什么一个网站项目不通过 IIS 提供页面?
【发布时间】:2013-06-23 16:53:54
【问题描述】:

我继承了一个相当复杂的网站项目,当我在 VS 2012 中在“服务器”的默认“使用默认 Web 服务器”设置下运行它时,它在基本 URL http://localhost:45632 下正确提供登录页面我可以很好地登录。然后,当我单击 URL 为 http://localhost:45632/Apps/Visitors/General.aspx 的菜单项时,我会得到一个简单明了的 404。

如果我在 IIS 7.5 中为它创建一个网站(不是默认站点下的应用程序);将物理目录设置为项目的源文件夹;给它一个主机名xtjethro.local,然后编辑我的主机文件以将该主机名指向127.0.0.1;将网站项目设置为使用自定义服务器,其基本 URL 为,最后,从其上下文菜单浏览该站点,它在基本 URL http://xtjethro.local/ 而不是 http://localhost:45632 下提供其页面,一切正常。

然后,如果我将网站项目设置为使用基本 URL 为 http://xtjethro.local 的自定义服务器,并重新启动 VS2012,以管理员身份运行它,一切都可以从那里开始。

我想知道为什么http://localhost:45632/Apps/Visitors/General.aspx在VS2012下不起作用,而http://xtjethro.local/Apps/Visitors/General.aspx却在IIS下起作用。

【问题讨论】:

  • 我意识到这个问题的答案可能是否定的,但这不会是在 IIS 中设置的虚拟目录吧?
  • @MarkRucker 没有,项目连接的IIS默认站点下没有虚拟目录。

标签: asp.net visual-studio iis visual-studio-2012 iis-7.5


【解决方案1】:

Visual Studio 开发网络服务器通常在与您的项目名称匹配的虚拟目录下运行站点。这意味着您页面的 URL 应该是 http://localhost:45632/YourProjectName/Apps/Visitors/General.aspx。如果您在 IIS 的默认站点下创建应用程序,您可能会看到同样的问题。

您需要更改链接的生成方式。不要使用/Apps/...,而是使用~/Apps/... - ASP.NET 会自动将~/ 解析为站点的基本路径。

【讨论】:

  • VS 应该知道该站点(不在默认站点下)。我已经指定了一个自定义服务器并将其作为 URL 基础提供给它。
  • @ProfK:但如果你有,例如:<a href="/Apps/Visitors/General.aspx">,VS 不会更改那个 URL。您需要使用应用相对 URL 和 ASP.NET 的服务器控件来正确扩展路径。
猜你喜欢
  • 2010-11-03
  • 1970-01-01
  • 2015-11-05
  • 2011-05-31
  • 1970-01-01
  • 2017-02-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多