asp.net-web-api-routing 相关问题

有关在ASP.NET Web API框架中进行路由的问题

在.net中的同一进程中托管多个Web API

我们有一个微服务架构,每个微服务当前都托管在自己的进程中,并通过自己的 Docker 镜像进行部署。课本完全分开。 在源代码级别上,所有这些...

回答 1 投票 0

asp.net WebApi ApiVersionUnspecified 返回错误

我使用WebApi已经有几年了,但现在似乎不起作用。在最近的 asp.net .NET Framework 项目中,我已将 WebApi 添加到现有的 MVC 解决方案中。我正在使用 nuget 包 Microsoft.AspNet。

回答 2 投票 0

Url.Link() 未使用查询字符串生成正确的链接

我正在创建一个 ASP.NET Core WebAPI,它具有带有可选参数的路由。在返回结果中,我嵌入了“上一页”和“下一页”的链接。我正在使用 Url.Link()

回答 1 投票 0

本地测试Web api时出现404 not found错误

这是我第一次尝试在项目中使用 WEB API,但没有取得任何成功...... 当我尝试在 Fiddler 中访问我的 api 路由时,我不断收到 404 错误。 我尝试了很多...

回答 4 投票 0

HttpGetAttribute 名称属性不适用于路由

我有一个名为 WeatherForecast 的 WebAPI 控制器,只需一个操作。操作方法如下: [HttpGet(名称 = "GetWeatherForecast")] 公共 IEnumerable 我有一个名为 WeatherForecast 的 WebAPI 控制器,只需一个操作。操作方法如下: [HttpGet(Name = "GetWeatherForecast")] public IEnumerable<WeatherForecast> Get() { return Enumerable.Range(1, 5).Select(index => new WeatherForecast { Date = DateTime.Now.AddDays(index), TemperatureC = Random.Shared.Next(-20, 55), Summary = Summaries[Random.Shared.Next(Summaries.Length)] }) .ToArray(); } 但是,HttpGet.Name = "GetWeatherForecast" 应定义路线名称“GetWeatherForecast”,因为我了解 Name 属性对于此属性的用途。 但是 Swagger 向我展示了操作本身根本没有路由: 显示的 URL 为 https://localhost:port/WeatherForecast (通过该URL即可消费服务操作,我使用Postman进行测试) 但是使用设置了 HttpGet 属性的 Name 属性,我希望它是 https://localhost:port/WeaterhForecast/GetWeatherForecast 当我在操作方法上额外使用Route属性(Route("GetWeatherForecast"))时,操作的路线如下所示:https://localhost:port/WeatherForecast/GetWeatherForecast (现在确实可以通过该 URL 访问服务操作)。 所以,问题是:为什么 Name 属性的 HttpGet 属性没有实现文档所承诺的功能?或者 HttpGetAttribute.Name 的真正用途是什么? 源代码是使用 .NET 6.0 和 VS 2022 编写的,项目类型 ASP.NET Core-Web-API。显示的代码来自项目模板自动创建的控制器。 您使用HttpGet属性的方式: [HttpGet(Name = "GetWeatherForecast")] 表示您指定 Name 属性,该属性不会更改路由 URL 的生成方式。路由名称可用于使用特定路由生成链接,而不是依赖于基于给定的一组路由值来选择路由。 相反,您应该通过排除命名参数或使用正确的名称来指定 Template 属性: [HttpGet("GetWeatherForecast")] 或者: [HttpGet(Template = "GetWeatherForecast")] DavidG 是对的。使用 [HttpGet("GetWeatherForecast")] 而不是 [HttpGet(Name = "GetWeatherForecast")] 对我有用。我在同一个问题上被困了很多天,尝试了很多解决方法,并遵循了互联网上不同论坛中几乎所有可用的建议,但最有效的解决方案是删除控制器内的 Name 属性。 这确实是一个奇怪的事实,使用 [HttpGet(Name = "GetWeatherForecast")] 确实有效,因为它暗示它会起作用,如果你使用类似的东西 routes.MapGet("/api/Pnrlog/{id}", (int id) => { return new Pnrlog { PnrlogId = id }; }) .WithName("GetPnrlogById"); 它也不是那样工作的...... 这并没有回答问题,但添加了一些有趣的内容,这肯定会澄清Name和Template目标之间的区别(尽管我无法正式说出它是什么): 删除 Name 属性以使用模板,最终允许通过指定完整路由来访问资源:https://localhost:7008/WeatherForecast/GetWeatherForecast。 但是 - 通过单独指定到控制器的路由来访问相同的资源 - 不再返回结果。 简而言之: 使用 Name 属性、Get 方法(名为 GetWeatherForecast),可以通过单独路由到控制器来访问资源:https://localhost:7008/WeatherForecast。尝试通过完整路径访问资源失败 (404)。 使用 Template 属性,可以使用完整路径访问资源:https://localhost:7008/WeatherForecast/GetWeatherForecast。尝试单独路由到控制器来访问它,失败 (404)。 [HttpGet("GetWeatherForecast")] //[HttpGet(Name = "GetWeatherForecast")]

回答 3 投票 0

ASP.NET Core Web API:我的 api 在本地主机上运行,但在我的 plesk 网络服务器上运行失败

我已经构建了一个 ASP.NET Core Web API,它在我的机器上运行良好,用 postmann 测试它,一切都很漂亮,但是当我将它放在我的 plesk Web 服务器上时,它总是显示错误 404...

回答 1 投票 0

ASP.NET Core 7 Web API:Angular 表单控件的日期序列化

我一直在 Stack Overflow 和整个网络上搜索,但我似乎找不到直接的答案。 在 Person 类中,Birthday 被定义为 DateTime。 公开课人物 { 公共字符串 N...

回答 1 投票 0

ASP.Net Core WEB API 中允许参数名称带有“[”

我的操作方法应该如下所示: public IActionResult GetAll([FromQuery]字符串页[编号],[FromQuery]字符串页[大小]) { //代码 } HTTP 请求类似于:“GetAll?page%5Bnumber%5D=0&

回答 1 投票 0

如何在 ASP.NET Core 7 Web API 中为所有端点设置前缀?

我正在从 appsettings.json 中检索一个字符串: { “连接字符串”:{ //几个字符串 }, “基本路线”:{ “基础”:“/myapi/” } } 而我...

回答 1 投票 0

C# .net webapp 不会向我的 api 控制器提供请求

这里有点不知所措。编写一个 .net Web 应用程序作为前端的后端,并且似乎无法让我的 api 路由注册/工作。当我尝试到达终点时,几乎就像......

回答 1 投票 0

API 从 .Net Framework 升级到 .Net 6.0 在 Postman 中抛出 404 错误

我有以下代码,在 .Net Framework 中运行良好,但升级后抛出 404 错误。这基本上是我的代码: [路由前缀(“API”)] [基本身份验证过滤器] ...

回答 1 投票 0

Web API 1 | .NET 4.5.2。 |使用 http 动词而不是动作进行路由,无需外部库

我在 MSDN、SO 和其他网站上的任何地方都找不到此信息,而且我已经搜索了好几天。 我在一个 WEB API 1 - .NET 4.5.2 项目上,我需要公开一个 CRUD 控制器。 这意味着我不能...

回答 0 投票 0

WEB API Controller中的多个Get函数

我正在创建一个 Web Api 控制器。我想在单个控制器中创建多个 Get 函数。请参阅以下内容: // 获取 api/用户/5 [响应类型(类型(用户模型))] 公开

回答 4 投票 0

web api 从处理程序内部获取路由模板

在将问题放在这里之前我进行了很多搜索,但是搜索得越多,我就越困惑。 所以我创建了一个处理程序,我正在尝试获取这样的路由: 公开课

回答 5 投票 0

允许在 Web API 参数中使用特殊字符

我需要能够处理 REST 调用中的特殊字符。具体来说。和/字符。 例如,我有一个 GET 路由 /api/division/{someDivision}。现在,用参数调用这条路线...

回答 2 投票 0

Tring 覆盖父 ASP.NET 控制器时出现 AmbiguousMatchException

全能! 第二天过去了...需要帮助! 我有两个控制器:ASP.NET C# WebAPI 应用程序中的基础 DocumentController 和派生 InvoiceController**:** [API控制器] [路线(“文档...

回答 0 投票 0

为什么我的 .net Core API 属性路由不起作用?

我正在试验“Hosted Blazor WASM”项目。此问题不涉及 Blazor 客户端路由器(工作正常)。这与“服务器端”路由器无关

回答 3 投票 0

.NET Core 中同一控制器的多个路由有和没有版本不起作用

我想创建两条路由,一条有版本,另一条没有,指向同一个控制器而不修饰控制器方法。 我在控制器的顶部定义了两条路线,......

回答 0 投票 0

使用WebAPI的CORS有时能用,有时不能用。

我已经使用了以下内容:http:/www.asp.netweb-apioverviewsecurityenabling-cross-origin-requests-in-web-api 正如这里的建议。用WebAPI的PUT POST请求来启用CORS?

回答 2 投票 6

ASP.Net WEB API 2.0中基于属性的路由/版本控制

我正在尝试在Asp.Net Web API中使用版本控制。以下是项目的结构。为了支持版本控制,我添加了Microsoft.AspNet.WebApi.Versioning NuGet程序包。以下是代码...

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.