好吧,
我试图在.Net WebAPI中模拟基于RoR的服务。该服务的Ruby实现应该从以下URL中返回JSON文档:
http://myserver/api/assessments/{id}.js
请注意最后的.js
。
我在我的api控制器上做了RouteAttribute
装饰,如下所示:
[Route("~/api/assessments/{id}.js")]
public async Task<HttpResponseMessage> GetAssessment(int id)
{
. . .
}
...但我收到404错误。我怀疑这可能是因为请求以&#34; js&#34;结束,所以在经过一些研究后我发现我应该将RouteCollection.RouteExistingFiles
设置为true
...这似乎没有有任何影响。我仍然得到404。
我是对的吗?是.js
结束导致404的原因是什么?我怎么能绕过这个?这是一个纯粹的WebApi项目,所以它并不像我在其中使用JavaScript。
答案 0 :(得分:3)
您的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>