gpt4 book ai didi

c# - Web api 2 字符串路由失败

转载 作者:行者123 更新时间:2023-11-30 20:40:02 25 4
gpt4 key购买 nike

到目前为止,我正在尝试在 C# 中使用 Web API,它工作得很好,但我只是有一条路线不想工作,我搜索了一些有类似问题的人,但他们的解决方案没有似乎不起作用。我正在尝试使用特定路由并在字符串中捕获电子邮件地址,这是我的 Controller :

[Authorize]
[RoutePrefix("api/contact")]
public class ContactController : ApiController
{
[Route("list/{id:int}")]
[HttpGet]
public ContactList GetList(int id)
{
BasicAuthenticationIdentity identity = (BasicAuthenticationIdentity)this.User.Identity;
ContactModel contactModel = new ContactModel(identity.accountId);
return (contactModel.GetList(id));
}

[Route("list/{id:int}")]
[HttpPost]
public void PostList(int id)
{
BasicAuthenticationIdentity identity = (BasicAuthenticationIdentity)this.User.Identity;
// To be implemented
}

[Route("attribute/{contactKey}")]
[HttpGet]
public IEnumerable<ContactData> GetContactAttributeKey(string contactKey)
{
BasicAuthenticationIdentity identity = (BasicAuthenticationIdentity)this.User.Identity;
ContactModel contactModel = new ContactModel(identity.accountId);
return (contactModel.GetContactAttribute(contactKey));
}
}

列表路由运行良好,但是当我尝试类似 http://localhost/api/contact/attribute/test@test.com我不断收到 HTTP 错误 404.0 - 未找到,因为它似乎找不到路由。这有什么问题吗?

我在webconfig里也有这个

// Itinéraires de l'API Web
config.MapHttpAttributeRoutes();

config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);

我试图查看是否可以设置其他相同的路由,但没有其他路由,我只有一个帐户和分段路由,如果有人有任何建议,我现在对所有内容都持开放态度:/

最佳答案

您应该使用 %40 代替 @ 符号,使用 %2E 代替 .

http://localhost/api/contact/attribute/test%40test%2Ecom

这叫做 URL encoding ,某些字符在 URL 中无效。

关于c# - Web api 2 字符串路由失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33760428/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com