我有一个简单的属性路由,有三个不同的路径段:
[HttpGet]
[GET("v{version:int}/{category}/{service}")]
public async Task<HttpResponseMessage> RouteMessage(
string category, string service, int version = 1)
{
}
虽然路由在本地开发时有效,但在将其部署到IIS服务器时失败(404)。
失败的网址:
http://example.com/v1/search/products?client=test
我确定这不是IIS问题,因为我仍然可以使用非属性路由访问服务(请注意,即使v1
不是int,参数本身也有默认值):< / p>
http://example.com/api/route/?version=v1&category=search&service=products&client=test
我已经安装了Route Debugging,并且正如预期的那样,我的路线不匹配属性路线,即使它应该。
app相对路径列为~/v1/search/products
,它应与url格式v{version}/{category}/{service}
匹配(“version”也正确列出了int路由约束)。
Here's an image,如果有帮助,请提供完整的调试信息。
答案 0 :(得分:0)
感谢@Kiran Challa,我意识到,虽然相似,但内置WebAPI attribute routing与AttributeRouting.WebApi
不同。我切换到内置路由,现在一切正常。