带有 *.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>
好吧, 好笑的结局...
我正在尝试在 .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>