【发布时间】:2026-02-04 15:15:01
【问题描述】:
我正在尝试使用以下模板设置到我的 MVC 控制器操作的路由:
[Route("app/{appId:length(20)}/validate/{version}")]
这个想法是生成的 URL 看起来像这样: (我正在添加一个空格以使 localhost url 尝试无法解析...)
http://localhost:2642/api/update/v1/app/6A6EE0B355C34DBFB381/validate/1.0.0.0
我遇到的问题是这会给我一个 404 错误。
如果我删除 Route 属性并使用内置的 MVC 路由,它就可以工作。然后网址是:
http://localhost:2642/api/external/CheckForUpdate?appId=6A6EE0B355C34DBFB381&version=1.0.0.0
这应该可以工作,因为我知道 Nuget 在他们的 URL 中有版本,但我认为他们使用内置的 MVC 路由器。
我还尝试在路由模板中添加 :regex() 标记,以验证字符串格式,但这不起作用。如果我传入一个普通的字符串或一个诸如 1_0_0_0 之类的值,它就可以工作。问题是我不想在将版本字符串发送到 api 然后再发送到 api 本身之前对其进行操作。
关于我做错了什么有什么想法吗?
【问题讨论】:
标签: asp.net-mvc-4 asp.net-web-api attributerouting