带有 *.js 的 URL 的 WebApi 属性路由

WebApi Attribute Routing for URLs with *.js

好吧, 好笑的结局...

我正在尝试在 .Net WebAPI 中模拟基于 RoR 的服务。该服务的 Ruby 实施应该 return 来自 url 的 JSON 文档:

http://myserver/api/assessments/{id}.js

注意最后的.js

我在我的 api 控制器上做了一个 RouteAttribute 装饰,如下所示:

[Route("~/api/assessments/{id}.js")]
public async Task<HttpResponseMessage> GetAssessment(int id)
{
    . . .
}

...但是我遇到了 404 错误。我怀疑这可能是因为请求以 "js" 结尾,所以经过一些研究我发现我应该将我的 RouteCollection.RouteExistingFiles 设置为 true...这似乎没有任何效果.我仍然收到 404。

我说的对吗? .js 是否结束了导致 404 的原因?我该如何解决这个问题?这是一个纯 WebApi 项目,所以它不像我在其中使用 JavaScript。

您的 Web.config 中有以下内容吗?我最近刚刚为一个工作项目设置了路由,这条线让我很痛苦,因为它不存在:

<configuration>
  ...
  <system.webServer>
    <modules runAllManagedModulesForAllRequests="true">
    ...
    </modules>
  </system.webServer>
</configuration>

执行路由的托管模块可能未选取 .js 扩展名。

附录: 该配置部分中的其他数据以及使其工作所需的数据:

<configuration>
  ...
  <system.webServer>
    <modules runAllManagedModulesForAllRequests="true">
      <add name="UrlRoutingModule"
         type="System.Web.Routing.UrlRoutingModule, 
               System.Web.Routing, Version=3.5.0.0, 
               Culture=neutral, 
               PublicKeyToken=31BF3856AD364E35" />
    </modules>
    <handlers>
      <add name="UrlRoutingHandler"
        preCondition="integratedMode"
        verb="*" path="UrlRouting.axd"
        type="System.Web.HttpForbiddenHandler, 
              System.Web, Version=2.0.0.0, Culture=neutral, 
              PublicKeyToken=b03f5f7f11d50a3a" />
    </handlers>
    ...
  </system.webServer>
</configuration>