微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Asp.Net Core 3.1 控制器方法未调用

如何解决Asp.Net Core 3.1 控制器方法未调用

我有 Asp.net core 3.1 目标应用程序。所以基本上 HomeController 我们正在使用与视图相关的操作触发器并且它工作正常。但是我在 HomeController 中有另一个名为 PostData 的 Get 方法,但它没有得到trigger.and 总是返回 Index 方法 View html 作为响应。

获取网址:http://localhost:9062/Home/PostData?detail=test

家庭控制器:

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" });
      });

我已经尝试过但还没有解决这个问题?

提前致谢。

解决方法

在您的 Startup.cs 中

app.UseMvc(configureRoutes => {
                configureRoutes.MapRoute(name: "default",template: "{controller=Login}/{action=Login}/{id?}");
            });

如您所见,您的操作方法需要一个 id。将您的字符串详细信息更改为字符串 id,它应该可以正常工作。

,
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=testhttps://localhost:44332/postdata?detail=test

我建议您可以先尝试删除 SPA 路由,然后检查 MVC 路由是否正常工作。如果还是不行,您能否创建一个关于它的新示例并通过 Github 或 OneNote 共享它,以便我们可以复制它并帮助您修复它。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。