gpt4 book ai didi

c# - 找不到提供 Controller 名称的路由与请求 URI 匹配

转载 作者:太空狗 更新时间:2023-10-30 01:03:41 25 4
gpt4 key购买 nike

使用 WebApi 2.2。在我的 WebApiConfig.cs 中我有:

public static void Register(HttpConfiguration configuration)
{
configuration.Routes.MapHttpRoute("API Default", "api/{controller}/{id}",
new { id = RouteParameter.Optional });

configuration.Routes.MapHttpRoute(
name: "EnvironmentCreateAnnualTargetApi",
routeTemplate: "api/EnvironmentTargets/{WorkLocationGuid}/{UserGuid}/{Year}"
);

configuration.Routes.MapHttpRoute(
name: "EnvironmentUnitConversionApi",
routeTemplate: "api/Conversions/{ConvertFromMeasureId}/{ConvertFromAmount}/{ConvertToMeasureId}/{MeasureDefinition}",
defaults: new
{
ConvertFromMeasureId = RouteParameter.Optional,
ConvertFromAmount = RouteParameter.Optional,
ConvertToMeasureId = RouteParameter.Optional,
MeasureDefinition = RouteParameter.Optional
}
);
}

名为“EnvironmentCreateAnnualTargetApi”的路由正在运行,但我无法让第二个路由运行,尝试了许多不同的方法并搜索了该站点。

我的 Controller 是这样的:

[RoutePrefix("api/Conversions")]
public class ConversionsController : ApiController
{

然后到方法:

// GET: api/Conversions/7/5000/10/1
[HttpGet, ActionName("Get")]
[AllowAnonymous]
public double Get(int ConvertFromMeasureId, double ConvertFromAmount, int ConvertToMeasureId, int MeasureDefinition)

我已经尝试过使用和不使用 MapHttpRoute 方法中设置的默认值。

我不断收到的错误是:

<Error>
<Message>No HTTP resource was found that matches the
request URI 'http://localhost:50000/api/Conversions/7/10000/10/1'.</Message>
<MessageDetail>No route providing a controller name was
found to match request URI
'http://localhost:50000/api/Conversions/7/10000/10/1'</MessageDetail>
</Error>

我不明白我在这里可能犯了什么错误。试过东西from many different answers但没有人更聪明。

最佳答案

在剥离所有东西并随机尝试之后,我最终找到了解决方案(无论如何对我来说)。

改变:

configuration.Routes.MapHttpRoute(
name: "EnvironmentUnitConversionApi",
routeTemplate: "api/Conversions/{ConvertFromMeasureId}/{ConvertFromAmount}/{ConvertToMeasureId}/{MeasureDefinition}",
defaults: [blah]

到:

configuration.Routes.MapHttpRoute(
name: "EnvironmentConversions",
routeTemplate: "api/{Controller}/{ConvertFromMeasureId}/{ConvertFromAmount}/{ConvertToMeasureId}/{MeasureDefinition}",
defaults: new
{
Controller = "Conversions",
ConvertFromMeasureId = RouteParameter.Optional,
ConvertFromAmount = RouteParameter.Optional,
ConvertToMeasureId = RouteParameter.Optional,
MeasureDefinition = RouteParameter.Optional
}
);

突然间它起作用了。 routeTemplate 中关于 {controller} 的一些东西让它工作了。然而,我不知道为什么(并且想知道如果我有一个具有类似参数样式的 future 路由,这会产生什么影响)。

关于c# - 找不到提供 Controller 名称的路由与请求 URI 匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26973092/

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