2012-02-16 53 views
0

我有一个MVC3应用程序,我想直接使用电子邮件中发送的链接开始操作。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 - 未找到 您正在查找的资源已被删除,名称已更改或暂时不可用。

我在做什么错?

感谢

+1

您确定您的网站仍然在端口52972上运行? – 2012-02-16 00:26:37

回答

0

感谢 的实际问题是帕拉姆字符串更复杂,我的评论(我shortend它为简单起见,我的帖子)

但是,真正的参数我猜想触发了一些其他不同的路线(或者可能是额外的参数,谁知道) 我固定t他通过将参数转换为十六进制字符串(因此它只包含0-9,a-f)然后它工作

1

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

祝您好运。

1

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

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

的链接必须是:一切为您的时间

http://localhost:52972/MyApplicationName/Account/Confirm/c4e80acb46R8uIq 
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