我有一个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)
{
...
问题是:
当网址为:QRCode/address1/33
时,一切正常,但如果第二个参数中有一个点,例如:QRCode/address1/33.33
,我会收到“HTTP错误404.0 - 未找到”。< / p>
重新声明第二个参数,字符串产生相同的结果。
使用%2E代替点会产生相同的结果
有人知道这里发生了什么吗?我知道它在MVC3中运行良好
答案 0 :(得分:7)
如果这是在IIS 7上,那么将其添加到您的配置文件中它应该可以正常工作:
<system.web>
<httpRuntime relaxedUrlToFileSystemMapping="true" />
</system.web>
答案 1 :(得分:6)
是的......看到评论,处理程序映射是一个问题。
我将URL从QRCode / address1 / 33.33更改为QRCode / address1 / 33.33 /并且映射工作正常
答案 2 :(得分:0)
以下是另一种选择:不要映射金额,但将其作为带有名称的网址参数传递:
routes.MapRoute(
name: "QRCode",
url: "QRCode/{address}",
defaults: new { controller = "QRCode", action = "Index" }
);
现在用这样的网址调用api:
http://<server>/QRCode/address1?amount=33.33