如何通过将参数传递到Web URI中来从另一个应用程序调用WebAPI

时间:2019-02-18 05:11:42

标签: c# asp.net-web-api

我想从另一个应用程序中调用WebAPI并执行一些操作,我试图通过URL将一个应用程序中的参数传递到Web api中,但是在调用Web api时它不会在Web api中命中。< / p>

我创建了一个Web应用程序和一个Web API应用程序。我已将一个html模板添加到Web应用程序中,并添加了一个带有src标签的图像,其中包含Web API uri,并试图通过该uri传递参数,我正在尝试调试Web API 通过添加断点,每当图像加载到Web应用程序时,它都不会在Web API中被击中。 (都是我的应用程序都处于运行模式。)

这是我的html模板:

<form method="get">
    <img src="http://localhost:59800/TrackEmail?fromemail={fromemail}&toemail={toemail}&uid={uid}" height="0" width="0" />
</form>

这是我的网络api代码:

public class TrackEmailController : ApiController
{
    [Route("api/TrackEmail")]
    [HttpGet]
    public IHttpActionResult TrackEmail([FromUri]string fromemail, [FromUri]string toemail, [FromUri]string uid)
    {
        var context = new HttpContextWrapper(HttpContext.Current);
        HttpRequestBase request = context.Request;
        var agent = request.Browser.Browser;
        SaveTrack(uid, fromemail, toemail, DateTime.Now, "R", agent);
        return Ok();
    }

    private OracleConnection ocon;

    private void connection()
    {
        //oracle database connection
    }

    public void SaveTrack(string uid, string fromEmail, string toEmail, DateTime date_time, string flag, string agent)
    {
        connection();
        //database code
    }
}

这是我的WebApiConfig.cs代码:

config.Routes.MapHttpRoute(
            name: "MailApi",
            routeTemplate: "api/{controller}/{fromemail}/{toemail}/{uid}",
            defaults: new { fromemail = RouteParameter.Optional, toemail = RouteParameter.Optional, uid = RouteParameter.Optional }
        );

可能是什么问题?请帮忙。

1 个答案:

答案 0 :(得分:2)

    **[Route("api/TrackEmail")]**

您的路由错误,缺少“ api /” 尝试

<form method="get">
<img src="http://localhost:59800/api/TrackEmail?fromemail={fromemail}&toemail={toemail}&uid={uid}" height="0" width="0" />
</form>