MVC4 项目 - 参数值中不能有点?

问题描述 投票:0回答:4

我有一个 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 中运行得很好

asp.net asp.net-mvc-4
4个回答
7
投票

如果这是在 IIS 7 上,则将其添加到您的配置文件中,它应该可以正常工作:

<system.web>
     <httpRuntime relaxedUrlToFileSystemMapping="true" />
</system.web>

6
投票

是的...查看评论,处理程序映射是一个问题。

我将 URL 从 QRCode/address1/33.33 更改为 QRCode/address1/33.33/ 并且映射工作正常


0
投票

这是另一个选项:不映射金额,而是将其作为 URL 参数传递,名称为:

routes.MapRoute(
    name: "QRCode",
    url: "QRCode/{address}",
    defaults: new { controller = "QRCode", action = "Index" }
);

现在用这样的url调用api:

http://<server>/QRCode/address1?amount=33.33

0
投票

我在使用 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>
© www.soinside.com 2019 - 2024. All rights reserved.