【问题标题】:Request to webapi get method with parameters returns 404请求带参数的 webapi get 方法返回 404
【发布时间】:2017-04-08 05:48:58
【问题描述】:

在我的 WebApi 上调用此方法时出现 404 错误。

在我的 ApiController 上,我有一个 ArchiveTradingConfiguration 方法。

public class TradingConfigurationController : ApiController
{
[AcceptVerbs("GET")]
    public bool ArchiveTradingConfiguration(string correlationId, string symbol)
    {
...
    }
}

这是我的 startup.cs

public static class Startup
{
 public static void ConfigureApp(IAppBuilder appBuilder)
    {
    var config = new HttpConfiguration();
        config.EnableCors();

        config.Routes.MapHttpRoute(
        name: "ApiWithAction",
        routeTemplate: "api/{controller}/{action}/",
        defaults: null
        );

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

        config.Routes.MapHttpRoute(
        name: "ArchiveTradingConfiguration",
        routeTemplate: "api/{controller}/{correlationId}/{symbol}"
        );
     }
}

当我提出请求时,我使用:

var correlationId  = "SomeGuidAsString";
var symbol = "SomeStringValue"
var url = "api/TradingConfiguration/ArchiveTradingConfiguration/" + correlationId + "/" + symbol;

例如 http://localhost:8421/api/TradingConfiguration/ArchiveTradingConfiguration/034f7d92-dd02-46b3-9db2-11990ea5860c/SomeStringValue

有什么想法吗?

【问题讨论】:

  • 你能在没有其他规则的情况下测试你的应用吗,删除第一个和第二个配置并测试。
  • 如果我删除其他规则,我仍然会得到 404

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


【解决方案1】:

它现在正在工作。我做了 2 处更改。我不知道是否需要第一个。第二个是肯定的。

我的操作包含我的控制器的名称。将操作名称更改为存档

我的路线配置忘记添加 /{action}/

routeTemplate: "api/{controller}/{action}/{correlationId}/{symbol}"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-07
    相关资源
    最近更新 更多