首页 新闻 搜索 专区 学院

大侠们,请教个问题,为什么web api自定义路由没有效果啊?

0
悬赏园豆:30 [已解决问题] 解决于 2017-07-10 15:59

我在web api 2中配置路由

config.Routes.MapHttpRoute(
            name: "Contents",
            routeTemplate: "wopi/files/{name}/contents",
            defaults: new { controller = "Files", action = "GetFile" }
            );
            config.Routes.MapHttpRoute(
            name: "FileInfo",
            routeTemplate: "wopi/files/{name}",
            defaults: new { controller = "Files", action = "GetFileInfo" }
            );

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

然后有个方法 public OwaFileInfo GetFileInfo(string name, string access_token)

但是最终请求 http://localhost:33089/wopi/files/test.docx?access_token=06l+hXK6zWTUi 这样,结果就是404,为什么啊?使用默认的路由就可以啊。

众生少两千的主页 众生少两千 | 初学一级 | 园豆:1
提问于:2017-07-09 20:33
< >
分享
最佳答案
2

应该在方法上指定使用那个路由吧。

收获园豆:25
AT_HUAZI | 小虾三级 |园豆:1496 | 2017-07-09 21:28

大侠,我指定过了的,。都试过了,还是不行

众生少两千 | 园豆:1 (初学一级) | 2017-07-09 22:11

@众生少两千: 请求出现404问题,可能是因为你的请求参数`test.docx`中包含.,你尝试使用如下操作,看是否能解决您的问题。

第一种方法:修改web.config,修改```

<system.webServer>

    <modules `runAllManagedModulesForAllRequests="true"`>

      <remove name="ApplicationInsightsWebTracking" />

      <add name="ApplicationInsightsWebTracking" type="Microsoft.ApplicationInsights.Web.ApplicationInsightsHttpModule, Microsoft.AI.Web" preCondition="managedHandler" />

    </modules>

  </system.webServer>

```

在`<modules>`节点中添加`runAllManagedModulesForAllRequests="true"`

第二种方法:还是在web.config中,找到`<system.webServer>`节点下的`<

handlers>`节点下的`

      <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*" verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />

`将path修改成`path="*"` 试试看吧。应该能解决您的问题。

AT_HUAZI | 园豆:1496 (小虾三级) | 2017-07-10 00:10

@HelloTim: 我擦。第一种是要引用什么么?但是我用第二种成功了诶。怎么回事哦?就是因为 `test.docx`中包含 . 啊?什么原理 ?谢谢了哦,大神。

众生少两千 | 园豆:1 (初学一级) | 2017-07-10 00:20
其他回答(1)
1

点要特殊处理

收获园豆:5
吴瑞祥 | 园豆:29369 (高人七级) | 2017-07-09 20:59

大侠,能不能详细说下,谢了

支持(0) 反对(0) 众生少两千 | 园豆:1 (初学一级) | 2017-07-09 21:02

@众生少两千: http://blog.csdn.net/nomasp/article/details/50753967

  1. orders/{*date}

关键字:通配符

支持(0) 反对(0) 吴瑞祥 | 园豆:29369 (高人七级) | 2017-07-09 21:15

@吴瑞祥: 大侠,不懂诶。就算加了 通配符 也是一样的啊,没懂你得意思。

支持(0) 反对(0) 众生少两千 | 园豆:1 (初学一级) | 2017-07-09 22:23

@众生少两千: 我错了.

404是有2种的.一个404是webapi的路由抛出来的.一种是iis抛出来的.

如果你照上面的做法可以了.那说明你的404是iis抛出来的.和路由没关系.

支持(0) 反对(0) 吴瑞祥 | 园豆:29369 (高人七级) | 2017-07-10 17:54

@吴瑞祥: 啊。。还有这样啊。。。

支持(0) 反对(0) 众生少两千 | 园豆:1 (初学一级) | 2017-07-10 19:41

@吴瑞祥: 不一样么?

支持(0) 反对(0) 众生少两千 | 园豆:1 (初学一级) | 2017-07-10 19:44
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册