wc19840730 2023-06-27 12:03 采纳率: 100%
浏览 18
已结题

frame转.core。调用WEBAPI的一个基础问题。

是一个有点历史的B/S项目。前后端分离,前台用JQUERY的AJAX获取后台返回值的结构。后台是C#写的。
一般情况下是不考虑更换了,但现在国家推进自主化,所以为了今后可以迁移到非WINDOWS服务器上,又考虑到技术统一性,所以打算从FRAMEWORK迁移到CORE上。

稍微学习了一下CORE,觉得应该后台CORE应该用API控制器就能解决实现低成本更换了。
自己试了试,发现了一个问题,不知道怎么解决,或者说不知道问题出在哪里。

资料里都写,项目中添加一个控制器,然后直接在类库上的路由里写规则就可以了。如下:

[Route("api/DAL")]
[ApiController]
    public class ValuesController : ControllerBase
    {
        [HttpPost("Return1")]
        public static String Return1()
        {
            return "12333";
        }
    }

比如这样,那么前台在调接口的时候AJAX就按 url:"http://localhost:43776/api/DAL/Return1" 这么调用就可以了。
但我试了都是404错误。不太明白,网上查了都在说跨域问题。我用POSTMAN也试过了,也是404 ,请各位指点一下。

IDE用的VS2019,就是用的最原始的创建模板。

  • 写回答

3条回答 默认 最新

  • 自在猫先生 2023-06-27 15:10
    关注

    源于chatGPT仅供参考,404不是跨域问题是你前端请求的地址不对:一般的是服务器ip:端口/api/控制器/接口,看你的地址没有看到控制器

    
    从您提供的代码来看,有几个问题需要注意:
    
    1. 静态方法问题:在控制器中定义的操作方法不能是静态的。请将`Return1`方法改为实例方法,如下所示:
    
    ```csharp
    [Route("api/DAL")]
    [ApiController]
    public class ValuesController : ControllerBase
    {
        [HttpPost("Return1")]
        public string Return1()
        {
            return "12333";
        }
    }
    
    1. 路由配置问题:在ASP.NET Core中,默认情况下,路由配置是通过Startup.cs文件中的Configure方法进行设置。确保已经正确配置了路由规则,可以参考以下示例:
    public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
    {
        // 其他中间件配置代码...
    
        app.UseRouting();
    
        app.UseEndpoints(endpoints =>
        {
            endpoints.MapControllers(); // 添加API控制器路由
        });
    }
    

    上述示例中的endpoints.MapControllers()会自动扫描项目中的API控制器并设置路由规则。

    1. 异常处理问题:在ASP.NET Core中,默认情况下,控制器的操作方法应返回IActionResult类型,以支持更灵活的结果返回和异常处理。在您的示例中,可以将返回类型从string改为IActionResult,并使用Ok方法返回字符串结果,如下所示:
    public IActionResult Return1()
    {
        return Ok("12333");
    }
    

    通过以上修改,您的API控制器应该能够正确地返回字符串结果。请确保已经安装了所需的NuGet包,并按照ASP.NET Core的最佳实践进行配置和开发。如果您遇到其他问题,请提供更多细节以便我们能够更好地帮助您解决问题。

    ```

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 7月5日
  • 已采纳回答 6月27日
  • 创建了问题 6月27日

悬赏问题

  • ¥15 Oracle中如何从clob类型截取特定字符串后面的字符
  • ¥15 想通过pywinauto自动电机应用程序按钮,但是找不到应用程序按钮信息
  • ¥15 MATLAB中streamslice问题
  • ¥15 如何在炒股软件中,爬到我想看的日k线
  • ¥15 51单片机中C语言怎么做到下面类似的功能的函数(相关搜索:c语言)
  • ¥15 seatunnel 怎么配置Elasticsearch
  • ¥15 PSCAD安装问题 ERROR: Visual Studio 2013, 2015, 2017 or 2019 is not found in the system.
  • ¥15 (标签-MATLAB|关键词-多址)
  • ¥15 关于#MATLAB#的问题,如何解决?(相关搜索:信噪比,系统容量)
  • ¥500 52810做蓝牙接受端