gpt4 book ai didi

c# - 路线在 postman 中工作不正确,不允许邮寄

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:23:16 24 4
gpt4 key购买 nike

我正在使用 mvc 和 visual studio 创建一个 web api,但是我遇到了一个问题。顺便说一句,我在桌面版 postman 上运行它,而不是通过本地主机在浏览器上运行。

我调用url的方式是

http://localhost:12513/api/CustomerContracts/AddCustomer

[System.Web.Http.HttpPost]
[System.Web.Http.Route("AddCustomer/{description}/{customerRef}/{contractTypeId}/{startDate}/{EndDate}")]

public async Task AddCustomer(string Description, string CustomerRef, int ContractTypeId, DateTime startDate, DateTime endDate)
{
CustomerContracts _newContact = new CustomerContracts();

try
{
_newContact.Description = Description;
_newContact.CustomerRef = CustomerRef;
_newContact.ContractTypeId = ContractTypeId;
_newContact.StartDate = startDate;
_newContact.EndDate = endDate;
db.Entry(_newContact).State = EntityState.Modified;

db.CustomerContract.Add(_newContact);
await db.SaveChangesAsync();
}
catch (Exception x)
{
throw new HttpResponseException(new HttpResponseMessage(HttpStatusCode.InternalServerError) { Content = new StringContent(x.Message) });


}

}

当我在 post man 中运行上面的命令时,会出现以下错误

{ "Message": "The requested resource does not support http method 'POST'." }

我已经在同一个问题上尝试了另一个 SO,但它没有解决我的问题。

我使用的是第一次创建时在 web api 项目中的默认路由文件。

 public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}

编辑 2

我提出了以下建议,结果与 postman 中的错误消息相同。

 [System.Web.Http.HttpPost]


[System.Web.Http.Route("AddCustomer/{Description}/
{CustomerRef}/{ContractTypeId}/{startDate}/{endDate}")]

public async Task AddCustomer(string Description, string CustomerRef, int ContractTypeId, DateTime startDate, DateTime endDate)
{



CustomerContracts _newContact = new CustomerContracts();

try
{
_newContact.Description = Description;
_newContact.CustomerRef = CustomerRef;
_newContact.ContractTypeId = ContractTypeId;
_newContact.StartDate = startDate;
_newContact.EndDate = endDate;
db.Entry(_newContact).State = EntityState.Modified;

db.CustomerContract.Add(_newContact);
await db.SaveChangesAsync();
}
catch (Exception x)
{
throw new HttpResponseException(new HttpResponseMessage(HttpStatusCode.InternalServerError) { Content = new StringContent(x.Message) });


}



}

最佳答案

路由属性 必须与您编写parameters 列表名称的方式完全相同。

所以代替:

[System.Web.Http.Route("AddCustomer/{description}/{customerRef}/{contractTypeId}/{startDate}/{EndDate}")]

应该是

[System.Web.Http.Route("AddCustomer/{Description}/{CustomerRef}/{ContractTypeId}/{startDate}/{endDate}")]

请注意我是如何更改路径属性以匹配下面的参数列表的。

public async Task AddCustomer(string Description, string CustomerRef, int ContractTypeId, DateTime startDate, DateTime endDate)
{


}

其次:需要在App_Start中添加WebApiConfig.cs

public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
// Web API configuration and services

// Web API routes
config.MapHttpAttributeRoutes();

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

然后:在 Global.asax 文件中的 Application_Start 方法中,添加以下行以注册 WebApi Router

GlobalConfiguration.Configure(WebApiConfig.Register);

关于c# - 路线在 postman 中工作不正确,不允许邮寄,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50026008/

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