将路径_vti_bin / Lists.asmx添加到ASP.NET MVC 2 Web应用程序

时间:2010-04-21 23:49:32

标签: asp.net-mvc asmx routes

我正在尝试将路径 / _ vti_bin / Lists.asmx 添加到我的 ASP.NET MVC 2 Web应用程序中。

我正在注册路线如下:

routes.IgnoreRoute("{resource}.asmx/{*pathInfo}");
routes.Add(new Route("_vti_bin/Lists.asmx", new ListsHandler()));

其中ListHandler定义为:

public sealed class ListsHandler : IRouteHandler
{
    #region IRouteHandler Members

    public IHttpHandler GetHttpHandler(RequestContext requestContext)
    {
        throw new NotImplementedException();
    }

    #endregion
}

但是当我启动MVC应用程序并尝试导航到http://localhost:8888/_vti_bin/Lists.asmx时,我收到HTTP 404错误,而不是引发异常。

这在MVC中甚至可能吗?我是否需要在特定位置将Lists.asmx ASPX Web服务文件添加到我的项目中(我无法在Visual Studio项目中创建_vti_bin文件夹)?

更新:Darin的响应启用http://localhost:8888/_vti_bin/Lists.asmx现在可以正常工作(唯一的区别是路由定义的顺序)。但是现在,请求默认MVC 2项目站点的“关于”页面会向http://localhost:8888/_vti_bin/Lists.asmx?action=About&controller=Home发出请求,而不是请求家庭控制器!

显然,路线定义的顺序很重要。

1 个答案:

答案 0 :(得分:0)

这应该有效。以下是我所做的步骤:

  1. 启动VS2010
  2. 使用模板
  3. 创建新的ASP.NET MVC 2项目
  4. 将Global.asax修改为如下所示:

    public sealed class ListsHandler : IRouteHandler
    {
        public IHttpHandler GetHttpHandler(RequestContext requestContext)
        {
            throw new NotImplementedException();
        }
    }
    
    public class MvcApplication : System.Web.HttpApplication
    {
        public static void RegisterRoutes(RouteCollection routes)
        {
            routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
    
            routes.Add(new Route("_vti_bin/Lists.asmx", new ListsHandler()));
    
            routes.MapRoute(
                "Default",
                "{controller}/{action}/{id}",
                new { controller = "Home", action = "Index", id = UrlParameter.Optional }
            );
        }
    
        protected void Application_Start()
        {
            AreaRegistration.RegisterAllAreas();
            RegisterRoutes(RouteTable.Routes);
        }
    }
    
  5. 启动应用程序并导航至http://localhost:1505/_vti_bin/Lists.asmx

  6. System.NotImplementedException:未实现方法或操作