5

我有一个 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 Error 404.0 - Not Found”。

将第二个参数重新声明为字符串会产生相同的结果。

使用 %2E 代替点会产生相同的结果

有人知道这里发生了什么吗?我知道它在 MVC3 中运行良好

4

3 回答 3

7

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

<system.web>
     <httpRuntime relaxedUrlToFileSystemMapping="true" />
</system.web>
于 2012-12-16T19:58:02.807 回答
6

是的......请参阅评论,处理程序映射是一个问题。

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

于 2012-12-16T19:43:16.320 回答
0

这是另一种选择:不要映射金额,而是将其作为带有名称的 URL 参数传递:

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

现在用这样的 url 调用 api:

http://<server>/QRCode/address1?amount=33.33
于 2014-06-27T17:59:29.843 回答