繁体   English   中英

将值从控制器传递到WebAPI

[英]Passing values from controller to WebAPI

我需要跟踪我们网站上的电子邮件和页面。 我们想为此使用WebAPI,但是我是一个新手,发现的示例很难遵循。 这是我的问题:

我有一个EmailTrackerContoller,其代码如下:

public class EmailTrackingController : Controller
{
    [OutputCache(NoStore = true , Duration = 0)]
    [HttpPost]
    public ActionResult GetPixel(string email, Guid emailID) {

        var client = new HttpClient();
        var endpoint = "http://localhost:2640/api/EmailTracker/SaveEmail"; --path to my API
        var response = await client.PostAsync(endpoint, null); --this does not work

        const string clearGif1X1 = "R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==";
        return new FileContentResult(Convert.FromBase64String(clearGif1X1) , "image/gif");
    }
}

我还创建了一个WebAPI,该WebAPI的HttpPost方法称为SaveEmail:

[HttpPost]
public HttpResponseMessage SaveEmail([FromBody]string value) { --How do I get the Email and Guid I need from here?

    var a = new DL.EmailTracking();
    a.Insert("<email>" , Guid.NewGuid());

    return Request.CreateResponse(HttpStatusCode.Accepted , "");
}

关于此的几个问题:

  • 如何将值从控制器传递到WebApi?
  • 如果您有一个也会有用的链接,那么任何易于遵循的示例都将非常有用。

PostAsync的第二个参数是调用的内容。 将对象序列化为包含所需值的JSON并将其添加为内容。

var obj = new { Email = "mail@mail.com" };
HttpStringContent msg = new HttpStringContent(JsonConvert.SerializeObject(obj));
var response = await client.PostAsync(endpoint, msg);

修改接收方法以接收所需的属性。 我将使用一个类作为methods参数,但是您也可以将[FromBody]与列出的所有属性一起使用。

public HttpResponseMessage SaveEmail(EmailSave model)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM