Asp.Net Core 3.1 控制器方法未调用
Posted
技术标签:
【中文标题】Asp.Net Core 3.1 控制器方法未调用【英文标题】:Asp.Net Core 3.1 Controller method not calling 【发布时间】:2021-09-19 17:39:42 【问题描述】:我有 Asp.net core 3.1 目标应用程序。所以基本上 HomeController
我们正在使用与视图相关的动作触发器,它工作正常。但我在 HomeController 中有另一个名为 PostData
的 Get 方法,但它没有得到触发器。而且总是返回Index方法View html作为响应。
获取网址:http://localhost:9062/Home/PostData?detail=test
HomeController:
public class HomeController : Controller
public HomeController(StatelessServiceContext context)
public async Task<IActionResult> Index()
return View();
[HttpGet]
public async Task<string> PostData(string detail)//not getting call
return "PostData";
Startup.cs
app.UseMvc(routes =>
routes.MapRoute(
name: "default",
template: "controller=Home/action=Index/id?");
routes.MapSpaFallbackRoute(
name: "spa-fallback",
defaults: new controller = "Home", action = "Index" );
);
我已经尝试过,但还没有解决这个问题?
提前致谢。
【问题讨论】:
我不确定它是否有帮助,但 UseMvc 真的只适用于 dotnet core 2.2 及更低版本。您应该改用 UseEndpoints:docs.microsoft.com/en-us/aspnet/core/migration/… 你有没有试过像[HttpGet("postdata")]
和当你叫它http://localhost:9062/PostData?detail=test
?
是的,我试过[HttpGet("postdata")]
,但它不起作用
@r08 你把它叫做http://localhost:9062/PostData?detail=test
?
【参考方案1】:
在您的 Startup.cs 中
app.UseMvc(configureRoutes =>
configureRoutes.MapRoute(name: "default", template: "controller=Login/action=Login/id?");
);
如您所见,您的操作方法需要一个 id。将您的字符串详细信息更改为字符串 id,它应该可以正常工作。
【讨论】:
我已经在启动cs文件中有类似的配置 尝试改变公共异步任务http://localhost:9062/Home/PostData?detail=test
首先,请检查您的应用程序配置和请求 URL,它是 http
请求,而不是 https
,您是否将应用程序更改为使用 Http
?如果没有,请尝试更改请求 URL,如下所示:
https://localhost:9062/Home/PostData?detail=test
其次,由于您使用的是 MapSpaFallbackRoute() 方法,因此您的应用程序是 SPA 应用程序,对吧?我创建了一个 SPA 应用程序并检查了您的代码(添加 Home Controller 和 PostData 操作,然后使用 [HttpGet()]
或 [HttpGet("postdata")]
),一切正常,请求 URL 如下:https://localhost:44332/Home/PostData?detail=test
或 https://localhost:44332/postdata?detail=test
。
我建议您可以先尝试删除 SPA 路由,然后检查 MVC 路由是否有效。如果还是不行,能否创建一个关于它的新示例并通过 Github 或 OneNote 分享,以便我们重现并帮助您修复它。
【讨论】:
以上是关于Asp.Net Core 3.1 控制器方法未调用的主要内容,如果未能解决你的问题,请参考以下文章
在 ASP .NET Core 3.1 中调用 LoggerExtensions 方法时禁用/关闭 FxCop CA1303
ASP.net core 3.1 中控制器和剃须刀页面之间的路由
使用两个 JWT 身份验证方案,ASP.NET Core 3.1
Asp.Net Core 3.1 数据被检索但未保存到数据库中
发布时未调用具有 Telerik Kendo Grid Read 方法 ([DataSourceRequest]) 的 ASP.NET Core 2.0