首页 新闻 会员 周边 捐助

.net core API接口,为什么打开是404

0
悬赏园豆:10 [待解决问题]

asp.net Core API接口 POST, 在swagger中测试访问正常并提交数据正常么有问题,单独访问这个接口则返回404。

/// <summary>
/// 新增历史记录并返回主键ID
/// </summary>
/// <param name="entity"></param>
/// <returns></returns>
[HttpPost]
[Route("AddOrderIdentity")]
[EnableCors("any")]//添加cors 服务
public JsonResult AddOrderIdentity(OrderHistory entity = null)
{
if (entity == null)
return Json("参数为空");
return Json(bll.InsertReturnIdentity(entity));
}

PEPE YU的主页 PEPE YU | 初学一级 | 园豆:29
提问于:2018-10-29 15:43
< >
分享
所有回答(4)
0

404一般都是地址没写对,你检查下。或者贴下代码,看下你代码有没有什么问题

Heart丶 | 园豆:204 (菜鸟二级) | 2018-10-29 15:50

谢谢,谢谢。

支持(0) 反对(0) PEPE YU | 园豆:29 (初学一级) | 2018-10-29 16:39

@PEPE YU: Post请求不能通过地址栏直接访问的,通过后端代码模拟请求试试

支持(0) 反对(0) Heart丶 | 园豆:204 (菜鸟二级) | 2018-10-29 20:34

@Heart丶: 那前端调用返回404,前端如何可以成功调用呢

支持(0) 反对(0) PEPE YU | 园豆:29 (初学一级) | 2018-10-29 21:08
0

怎么访问的,贴代码

会长 | 园豆:12463 (专家六级) | 2018-10-29 15:52

谢谢,在Swagger中访问正常,提交数据信息也正常,单独访问这个Post接口返回404,图片贴出来了,麻烦有空帮忙看看,谢谢。

支持(0) 反对(0) PEPE YU | 园豆:29 (初学一级) | 2018-10-29 19:31
0

你这个是个post接口,不支持get,所以你浏览器里直接访问是找不到的,浏览器地址栏访问都是Get方式。

心雨纷扬 | 园豆:309 (菜鸟二级) | 2018-10-29 18:06

谢谢, 对接获取到返回404,有什么方法吗?谢谢

支持(0) 反对(0) PEPE YU | 园豆:29 (初学一级) | 2018-10-29 18:11

@PEPE YU: 模拟提交,如果程序访问,考虑跨域问题,netcore跨域百度下就可以解决

支持(0) 反对(0) 心雨纷扬 | 园豆:309 (菜鸟二级) | 2018-10-29 22:04

@PEPE YU: 用postman模拟提交,我一直用postman做代码测试。

支持(0) 反对(0) Jeffcky | 园豆:2789 (老鸟四级) | 2018-10-29 23:43

@PEPE YU: 你在特性上在加一个[HttpGet]

支持(0) 反对(0) 心雨纷扬 | 园豆:309 (菜鸟二级) | 2018-12-21 17:35
0

刚过这个坑  应该是跨域的问题  来个中间件 

HttpRequestHeaders Headers = context.Request.Headers as HttpRequestHeaders;

context.Response.Headers.Add("Access-Control-Allow-Origin", Headers.HeaderOrigin);
StringValues HeaderAccessControlRequestHeaders = Headers.HeaderAccessControlRequestHeaders;

context.Response.Headers.Add("Access-Control-Allow-Headers",
HeaderAccessControlRequestHeaders);

context.Response.Headers.Add("Access-Control-Allow-Credentials", "true");
context.Response.Headers.Add("Access-Control-Allow-Methods", context.Request.Method)
SpeakHero | 园豆:31 (初学一级) | 2018-10-29 19:08

感谢提醒,这个写在Startup中?

支持(0) 反对(0) PEPE YU | 园豆:29 (初学一级) | 2018-10-29 19:14

@PEPE YU: 肯定啊  也可以 实现IStartupFilter

支持(0) 反对(0) SpeakHero | 园豆:31 (初学一级) | 2018-10-29 19:15

@PEPE YU: 最重点是开启日志  这个才是检查问题的所在

支持(0) 反对(0) SpeakHero | 园豆:31 (初学一级) | 2018-10-29 19:18

不用你写的这么复杂,请求头设置现在都有对应枚举了,你可以再简化的呢。

支持(0) 反对(0) Jeffcky | 园豆:2789 (老鸟四级) | 2018-10-29 23:44

app.UseCors(options =>
{
options.AllowAnyOrigin()
.WithMethods(new string[] { HttpMethods.Get, HttpMethods.Post });
});

这样设置就可以了。很简洁的方式。。。

支持(0) 反对(0) Jeffcky | 园豆:2789 (老鸟四级) | 2018-10-30 00:03

@Jeffcky: 这个我看微软文档知道  但是尝试过 不行 通过不了  不知道为什么

支持(0) 反对(0) SpeakHero | 园豆:31 (初学一级) | 2018-10-30 09:46

@SpeakHero:还有一步,还要添加services.AddCors(),好像是这样,你添加了吗??

支持(0) 反对(0) Jeffcky | 园豆:2789 (老鸟四级) | 2018-10-30 09:47

@Jeffcky: 跟着微软文档一步一步 都不行  

  services.AddCors(options =>
            {
                //xhrFields: {
                // withCredentials: true
                options.AddPolicy("AllowSpecificOrigins",
                builder =>
                {
                    builder.WithOrigins(withOrigins.ToArray())
                    .AllowAnyMethod().AllowCredentials().AllowAnyHeader();
                });
            });

这样通过不了的  尝试很多次了  chrome 不认

支持(0) 反对(0) SpeakHero | 园豆:31 (初学一级) | 2018-10-30 09:49

@SpeakHero: WithOrigins(withOrigins.ToArray()),你设置了跨域的域名了?我们项目在任何浏览器中使用没有问题啊,就是这样做的。

支持(0) 反对(0) Jeffcky | 园豆:2789 (老鸟四级) | 2018-10-30 09:51

@Jeffcky: 文档中说可以限制域名  这个必须做到 白名单 才正常

支持(0) 反对(0) SpeakHero | 园豆:31 (初学一级) | 2018-10-30 09:52

@SpeakHero: 肯定的。

支持(0) 反对(0) Jeffcky | 园豆:2789 (老鸟四级) | 2018-10-30 12:11
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册