2016-05-30 129 views
1

我一直在关注本指南http://www.aspsnippets.com/Articles/Send-user-Confirmation-email-after-Registration-with-Activation-Link-in-ASPNet.aspx以创建一个系统,它可以在注册表上发送验证电子邮件,而且由于该指南适用于Web应用程序,我似乎遇到了一个小问题,而且我需要修改它的控制台应用程序,在控制台应用程序中使用Web应用程序方法

这段代码适用于Web应用程序,但我试图将其更改为适合控制台应用程序。

body += "<br /><a href = '" +Request.Url.AbsoluteUri.Replace("CS.aspx", "CS_Activation.aspx?ActivationCode=" + activationCode) + "'>Click here to activate your account.</a>"; 

尝试阅读有关Web客户端或开放的选择,但我似乎没有弄清楚如何获取绝对URI并添加所需的字符串来生成从控制台应用程序的激活链接。

如果需要,会添加更多代码。

试过这样的SO How to build a Url?,但我似乎无法使它正常工作。

激活码生成并将其保存在数据库上。

private static void SendActivationEmail(string email, string userName, MySqlConnection mysqlCon) 
    { 

     string activationCode = Guid.NewGuid().ToString(); 
     using (mysqlCon) 
     { 
      using (MySqlCommand cmd = new MySqlCommand("UPDATE accounts SET [email protected] " + 
                 "WHERE [email protected];")) 
      { 
       using (MySqlDataAdapter sda = new MySqlDataAdapter()) 
       { 
        cmd.CommandType = CommandType.Text; 
        cmd.Parameters.AddWithValue("@Username", userName); 
        cmd.Parameters.AddWithValue("@ActivationCode", activationCode); 
        cmd.ExecuteNonQuery(); 
        mysqlCon.Close(); 
       } 
      } 
     } 

回答

0

您是否在构建一个控制台应用程序,该应用程序具有用户注册某项服务?我真的不明白你在这里做什么。

如果您有一个控制台应用程序,那么不存在Request,因此当然不是Request.Url。因此,您需要另一种方法来查找或构建要嵌入到您的外发电子邮件中的URL。

+0

是的,这正是我要问的。它是一个服务器的控制台应用程序,用于处理我正在处理的游戏的注册和登录。一直试图使用这个http://stackoverflow.com/questions/20164298/how-to-build-a-url,并尝试构建我的网址,但我似乎无法让它悲伤地工作。 –

+0

那么您是不是想要在外发电子邮件中嵌入的链接总是一样? –

+0

链接本身是一个常量,但ActivationCode是在注册时自动生成的,并且是一个变量。我想发送的网址是“http://example.com/CS_Activation.aspx?ActivationCode=”+ activationCode –

0

在ASP.NET中,您的应用程序托管并始终具有Url,另一方面在Console应用程序中,您将不得不手动设置它。

要扩大罗伊Dictus评论:

也许这将是增加一个参数来应用配置好主意,把它MyWebActivationBaseUrl和设定值说“http://myserver.com/Activate.aspx?ac=”。

然后用它来建立个人激活网址。

+0

欣赏评论,已经解决了这个问题。将很快添加解决方案。 –

相关问题