我正在使用Web.Routing做一些工作,使用它来拥有友好的URL和很好的Rest类似于一个基本上由单个IHttpHandler呈现的站点的接口。没有webforms,处理程序生成所有html / json并将其作为进程请求的一部分写入。
这适用于像/ Sites / Accounting这样的东西,但是我不能让它适用于网站根目录,即'/'。
我已经尝试使用'default.aspx'注册一个空字符串的路由(这是我保存在我的根文件夹中的空aspx文件,以便与cassini和iis一起使用)。我明确地将RouteExistingFiles设置为false,但无论我在点击根网址时做什么,它仍会打开default.axpx,它没有继承的代码,并且包含一个简单的h1标记,表明我已经点击它。
我不想更改默认文件以重定向到所需的路由,我只想要在没有找到其他路由时应用相应的“默认”路由,类似于MVC。
作为参考,该站点的先前版本没有使用Web.Routing,但在web.config中引用了一个完全能够拦截root或default.aspx请求的处理程序。
规范:ASP.NET 3.5sp1,C#,没有webforms,MVC或openrasta。简单的旧IHttpHandlers。
答案 0 :(得分:0)
修复了我自己的问题:问题是集成的Web服务器,Cassini或其他一些问题。似乎它对路由不起作用,默认情况下只返回default.aspx文件,如果缺少,则显示目录列表。
将IIS与虚拟目录一起使用可以正常工作,但很烦人(因为他们需要在打开我的应用程序时设置新的虚拟目录,并污染我自己的IIS实例,因此会使代码共享者感到沮丧.Bah。可能我会做什么的但是,或者手动设置一个新的应用程序,这样我就可以使用仅限域名主机的路径,就像现场中存在的那样。
另一种方法是使用cassini的更新版本,见here,如果缺少default.aspx文件,它可以正常工作,但我还没有弄清楚如何将它与visual studio集成。任何帮助都会受到赞赏,但鉴于我有解决方法,这不是一个重要的优先事项。
答案 1 :(得分:0)
我意识到这是一个非常古老的帖子,但我刚刚使用VS2012遇到了同样的问题,所以我在这里发布这个以防万一。
我通过安装IIS Express并将项目设置为在Visual Studio中使用IIS Express解决了这个问题。解决了这个问题。