代码之家  ›  专栏  ›  技术社区  ›  BStill

如何调用位于部署在同一服务器上的另一个项目上的控制器函数?[已关闭]

  •  0
  • BStill  · 技术社区  · 6 年前

    我需要能够从我们的网站发送自动电子邮件,我们应该使用这个功能来做这是在另一个项目。

    public class EmailController : ApiController
    {
        [HttpPost]
        public void Send(SendMailModel mailObj)
        {
            MailMessage mail = new MailMessage();
            mail.From = new MailAddress(System.Configuration.ConfigurationManager.AppSettings["senderEmail"], mailObj.SendingApp);
            mail.To.Add(new MailAddress(mailObj.SendTo));
            mail.Subject = mailObj.Subject;
            mail.Body = mailObj.Body;
            // more code
        }
    }
    

    此电子邮件控制器位于以下网站: services.domain.dev 我们的项目部署在 project.domain.dev 。我应该如何打电话给这个来发送电子邮件?我正在考虑在前端调用AJAX来尝试调用它,但它没有路由url,我不允许编辑此项目。有没有办法从部署在同一服务器上的单独项目的后端与此通信?

    更新时间:

    public async Task<IHttpActionResult> SendEmail(string message)
        {
            //Hosted web API REST Service base url  
            string Baseurl = "http://services.domain.dev/";
            SendMailModel mail = new SendMailModel();
            mail.SendTo = "test@email.com";
            mail.Body = message;
            using (var client = new HttpClient())
            {
                //Passing service base url  
                client.BaseAddress = new Uri(Baseurl);
    
                client.DefaultRequestHeaders.Clear();
                //Define request data format  
                client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
    
                var stringContent = new StringContent(JsonConvert.SerializeObject(mail), Encoding.UTF8, "application/json");
                HttpResponseMessage Res = await client.PostAsync("api/Email/Send", stringContent);
    
                //Checking the response is successful or not which is sent using HttpClient  
                if (Res.IsSuccessStatusCode)
                    return Ok(true);
                return Ok(false);
            }
        }
    

    我一直在尝试使用它来与其他控制器进行通信,但我没有运气。有没有一种方法可以不使用异步而与另一个控制器通信?

    1 回复  |  直到 6 年前
        1
  •  0
  •   BStill    6 年前

    结果证明我的函数是正确的。我连接到的电子邮件API只允许将电子邮件发送到开发人员帐户,因此在发送到开发人员电子邮件之前,我无法接收它。