MVC3 - 电子邮件中的直接链接以启动控制器操作

时间:2012-02-16 00:19:04

标签: asp.net-mvc-3 controller routes

我有一个MVC3应用程序,我想直接使用电子邮件中发送的链接开始操作。

链接看起来像这样

http://localhost:52972/Account/Confirm/c4e80acb46R8uIq

在我的MVC应用程序中,我有一个AccountController,我创建了一个动作确认,如下所示:

public ActionResult Confirm(string id)
{
    ViewBag.ConfirmMessage = id;
    return View();       
}

我在global.asax上的路线是默认路线,

    public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

        routes.MapRoute(
            "Default", // Route name
            "{controller}/{action}/{id}", // URL with parameters
            new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
        );
    }

当我尝试访问链接时,我没有进入控制器的操作,而是出现错误

HTTP错误404.0 - 未找到 您要查找的资源已被删除,名称已更改或暂时不可用。

我做错了什么?

由于

4 个答案:

答案 0 :(得分:1)

您的控制器和路由看起来正确,所以我猜您的应用程序没有在不同的端口上运行或运行。确保在系统托盘中看到ASP.NET Development Server正在运行,如果不是,请按F5或ctrl + F5(不调试)启动它。您可以选择按照以下帖子为应用设置特定端口:http://msdn.microsoft.com/en-us/library/ms178109%28v=vs.80%29.aspx

祝你好运。

答案 1 :(得分:1)

如果您的应用程序托管在虚拟目录中,我怀疑您忘记了应用程序名称。所以而不是:

http://localhost:52972/Account/Confirm/c4e80acb46R8uIq

链接必须是:

http://localhost:52972/MyApplicationName/Account/Confirm/c4e80acb46R8uIq

答案 2 :(得分:1)

1-) Your server may down.
2-) Your port may be changed
3-) Your view does not exist.


solutions.

1-) Start your app again :)
2-) Set your application port as static from;
 Properties->Web->Servers Specific Port

3) Add new view

答案 3 :(得分:0)

谢谢大家的时间 实际问题是param字符串比我发布的内容更复杂(我在帖子中为了简单起见而将其缩短)

然而,真正的参数我想是触发了一些其他不同的路线(或者更多的参数,谁知道) 我通过将参数转换为十六进制字符串(因此它只包含0-9,a-f)来解决问题,然后它起作用