【发布时间】:2013-12-05 15:41:36
【问题描述】:
我需要将电子邮件地址发送到 Web.Api get 方法。在允许某人注册新帐户之前,我需要检查该电子邮件地址是否存在于我们的系统中。
我的第一个想法是encode 电子邮件地址,然后在Get 操作中时decode 它
网址看起来像这样
http://mysite/Api/RTSCredit/jharding%40email.com
但是,这总是会出现 404 响应错误
这里是WebApiConfig.cs
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{emailAddress}",
defaults: new { id = RouteParameter.Optional }
);
当我发送一个简单的字符串http://mysite/Api/RTSCredit/someemail
它会像我喜欢的那样触发 Get 操作,但显然无法返回有用的值。
这里是获取操作
[HttpGet]
public HttpResponseMessage Get([FromUri] string emailAddress)
{
using (IRtsCreditDal rtsCreditDal = new RtsCreditDal())
{
var listOfExistingUsers = rtsCreditDal.GetUsersByEmail(emailAddress);
if (listOfExistingUsers == null || listOfExistingUsers.Count == 0)
{
return Request.CreateResponse(HttpStatusCode.NotFound, "not found");
}
else
{
return Request.CreateResponse(HttpStatusCode.OK);
}
}
}
我需要进行哪些调整才能将电子邮件发送至此Action?
随着我玩得更远,它似乎不喜欢 URL 中的period。我可以轻松地做一些事情来替换那个角色,但感觉就像是 hack。
【问题讨论】:
-
你得到什么错误?
-
如果你使用:mysite/Api/RTSCredit?emailAddress=enodedaddress会发生什么?
-
404 与 ? Credit?emailAddress= 和 Credit/emailAddress= 之间
标签: c# encoding asp.net-web-api