我有一个 MVC4 项目,我正在尝试让它在 /QRCode/address/amount 等 URL 上运行。其声明方式如下:
路线:
routes.MapRoute(
name: "QRCode",
url: "QRCode/{address}/{amount}",
defaults: new { controller = "QRCode", action = "Index" }
);
控制器:
public class QRCodeController : Controller
{
public ActionResult Index(string address, double amount)
{
...
问题是:
当 URL 为:
QRCode/address1/33
时,一切正常,但如果第二个参数中有一个点,例如:QRCode/address1/33.33
,我会收到“HTTP 错误 404.0 - 未找到”。
重新声明第二个参数字符串会产生相同的结果。
使用 %2E 代替点会产生相同的结果
有人知道这是怎么回事吗?我知道它在 MVC3 中运行得很好
如果这是在 IIS 7 上,则将其添加到您的配置文件中,它应该可以正常工作:
<system.web>
<httpRuntime relaxedUrlToFileSystemMapping="true" />
</system.web>
是的...查看评论,处理程序映射是一个问题。
我将 URL 从 QRCode/address1/33.33 更改为 QRCode/address1/33.33/ 并且映射工作正常
这是另一个选项:不映射金额,而是将其作为 URL 参数传递,名称为:
routes.MapRoute(
name: "QRCode",
url: "QRCode/{address}",
defaults: new { controller = "QRCode", action = "Index" }
);
现在用这样的url调用api:
http://<server>/QRCode/address1?amount=33.33
我在使用 MVC .NET 4.7.2 时遇到同样的问题
但是通过将这些配置添加到 web.config 来解决
<system.webServer>
<modules runAllManagedModulesForAllRequests="true">
<remove name="UrlRoutingModule-4.0" />
<add name="UrlRoutingModule-4.0" type="System.Web.Routing.UrlRoutingModule" />
</modules>
</system.webServer>