使用Visual Studio 2013 Professional,我创建了一个新项目。
选择“Visual Basic”,“Web”,“Web应用程序”。我选择MVC。没有认证。创建
然后我添加了一个名为" Test"的区域。一个名为" Test"和一个名为"索引"。
的视图我点击F5,项目构建并运行并给我HTTP 404
我做了完全相同的事情(字面上是相同的步骤),除了在创建Web应用程序时选择C#而不是Visual Basic。它有效。
是,调用AreaRegistration.RegisterAllAreas()。它是一个默认的新项目,具有上述步骤,但它根本不起作用,而C#版本则是。
为什么这样,我该如何解决?我的客户在VB.NET中需要它,而不是C#
编辑以下是RouteDebugger所说的内容:
Matches Current Request | Url | Defaults | Constraints | DataTokens
False | __browserLink/requestData/{requestId} (null) (null) (null)
True | Test/{controller}/{action}/{id} action = Index, id = UrlParameter.Optional (empty) Namespaces = WebApplication2.Areas.Test.*, area = Test, UseNamespaceFallback = False
False | {resource}.axd/{*pathInfo} (null) (empty) (null)
True | {controller}/{action}/{id} controller = Home, action = Index, id = UrlParameter.Optional (empty) (empty)
True | {*catchall} (null) (null) (null)
答案 0 :(得分:0)
它与C#或VB.NET没有任何关系......我猜应用程序中没有其他控制器;如果您有一个名为TestController
的控制器并且您使用的是默认路由,那么注册的唯一可用路由是test/test
答案 1 :(得分:0)
感谢此帖:https://stackoverflow.com/a/25417592/3036342
它强调,默认情况下,VB.NET区域控制器不会自动添加命名空间,这是其工作所必需的。将Namespace Areas.Test.Controllers
添加到TestController之后就可以了。
感谢微软让这种困难和愚蠢的体验。