【问题标题】:Web.Routing for the site root or homepage站点根目录或主页的 Web.Routing
【发布时间】:2012-09-10 19:32:43
【问题描述】:

我正在使用 Web.Routing 进行一些工作,使用它来提供友好的 URL 和类似 Rest 的类似站点的界面,该站点基本上由单个 IHttpHandler 呈现。没有 web 表单,处理程序生成所有 html/json 并将其作为流程请求的一部分写入。

这适用于例如 /Sites/Accounting 之类的东西,但我无法让它适用于站点根目录,即“/”。

我尝试使用“default.aspx”(这是我保存在根文件夹中的空 aspx 文件,以便与 cassini 和 iis 配合使用)注册一个带有空字符串的路由。我将 RouteExistingFiles 显式设置为 false,但无论我在点击根 url 时做什么,它仍然会打开 default.axpx,它没有继承的代码,并且包含一个简单的 h1 标记来表明我已经点击了它。

我不想更改默认文件以重定向到所需的路由,我只想在找不到其他路由时应用相当于“默认”路由,类似于 MVC。

作为参考,该站点的先前版本没有使用 Web.Routing,但在 web.config 中引用了一个处理程序,该处理程序完全能够拦截对 root 或 default.aspx 的请求。

规格:ASP.NET 3.5sp1、C#、无网络表单、MVC 或 openrasta。普通的旧 IHttpHandlers。

【问题讨论】:

    标签: asp.net ihttphandler system.web.routing


    【解决方案1】:

    解决了我自己的问题:问题是集成的 Web 服务器、Cassini 或类似的。似乎它不能很好地使用路由,并且默认情况下会简单地返回 default.aspx 文件,或者,如果它丢失,则显示目录列表。

    将 IIS 与虚拟目录一起使用可以正常工作,但很烦人(让代码共享者感到沮丧,因为他们在打开我的应用程序时需要设置新的虚拟目录,并污染了我自己的 IIS 实例。呸。我可能会这样做但是现在,或者手动设置一个新应用程序,这样我就可以使用域名托管服务商的唯一路径,就像现场存在的那样。

    另一种方法是使用 cassini 的更新版本,见 here,如果缺少 default.aspx 文件,它可以工作,但我还没有弄清楚如何将它与 Visual Studio 集成。任何帮助将不胜感激,但考虑到我有解决方法,这不是一个重要的优先事项。

    【讨论】:

    • 顺便说一句,这似乎已为 .Net 4/VS2010/2012 修复
    【解决方案2】:

    我意识到这是一个非常老的帖子,但我在使用 VS2012 时遇到了同样的问题,所以我在这里发布这个以防万一。

    我通过安装 IIS Express 并将项目设置为在 Visual Studio 中使用 IIS Express 解决了这个问题。解决了问题。

    【讨论】:

      猜你喜欢
      • 2011-02-24
      • 1970-01-01
      • 1970-01-01
      • 2018-08-27
      • 2011-03-11
      • 1970-01-01
      • 1970-01-01
      • 2011-07-14
      • 2011-12-19
      相关资源
      最近更新 更多