3

我有一个在本地调试和测试时完美运行的 web 应用程序。但是,当我将站点发布到生产服务器时,路由就搞砸了。这是因为它在生产服务器上作为子项目运行。

测试:http://localhost:xxx/
生产:http://remotehost/webapp/

我应该如何设置路由?

这是我当前的路由设置(大部分是默认设置)。当我访问http://remotehost/webapp/时,服务器会显示默认的 Controller 操作。但是当我对控制器进行硬编码时(http://remotehost/webapp/Project/它不起作用......

Shared Sub RegisterRoutes(ByVal routes As RouteCollection)
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}")

    routes.MapRoute("ProjectsByCategory", "Project/Category/{id}", _
                    New With {.controller = "Project", .action = "ListByCategory", .id = ""}, _
                    New With {.id = "^[0-9]+"})


    routes.MapRoute( _
        "Default", _
        "{controller}/{action}/{id}", _
        New With {.controller = "Project", .action = "Index", .id = ""} _
    )

End Sub
4

2 回答 2

3

对我来说,这听起来可能与在 iis 6 上发布有关。这里有一篇关于此的文章。

对我来说,通过添加“通配符应用程序地图”解决了类似的问题:

  • 在 IIS 中,右键单击并选择相关虚拟目录的属性
  • 选择虚拟目录选项卡
  • 选择配置
  • 单击插入
  • 输入 aspnet-isapi.dll 的路径(通常为 c:\windows\microsoft.net\framework\v2.0.50727\aspnet_isapi.dll)。
于 2009-04-29T20:16:18.193 回答
0

顺便说一句,路由似乎在应用程序级别上工作。无需打扰您的域名或更高的目录名称。

于 2009-05-03T14:04:13.827 回答