日期:2014-05-17  浏览次数:20401 次

请教一个 MVC 自定义路由的问题
本帖最后由 u013043284 于 2013-12-08 11:30:52 编辑
这是一个Web Api项目 ,已经做了如下配置:

public static void Register(HttpConfiguration config)
        {
            // Web API configuration and services
            config.Routes.MapHttpRoute(
                 "WithActionApi",
                 "api/{controller}/{action}/{serverfile}"
             );

            // Web API routes
            config.MapHttpAttributeRoutes();

            config.Routes.MapHttpRoute(
                name: "DefaultApi",
                routeTemplate: "api/{controller}/{id}",
                defaults: new { id = RouteParameter.Optional }
            );
        }

希望的Url :
http://localhost:61642/api/FileService/DownLoadFile/a.exe

但是会报404,而去后后面的 .exe 能够正确调用到 DownLoadFile方法,但是这样就缺少文件的扩展名了
另外,如果最后的参数,如果是 /soft/a.exe,又该怎么办呢?
各们高手帮忙看下这个路由该怎样定义呢?谢谢

------解决方案--------------------
路由是对的
你的DownLoadFile方法怎么不贴出来? 

其实采用默认的api路径配置只有创建一个DownLoadFile的控制器就行了
至于文件路径 soft/a.exe a.exe等 只要在请求时候将路径base64encode一下传过来就行了
 
最新版本的web api里面加了restful特性

只要在方法名上加上特性[Route("~api/authors/{authorId}/books")]即可配置路由
http://www.asp.net/web-api/overview/web-api-routing-and-actions/create-a-rest-api-with-attribute-routing