调用ASP.NET MVC时jQuery Ajax POST报ERR_CONNECTION_REFUSED错误
解决POST请求
net::ERR_CONNECTION_REFUSED问题 针对你遇到的连接拒绝错误,结合GET请求正常、POST失败的情况,从以下几个方向排查:
1. 确认服务器运行状态与端口匹配
- 检查ASP.NET MVC应用实际运行的端口是否为
7206:右键项目→属性→调试,查看「应用URL」中的端口号,确保和Ajax请求的https://localhost:7206完全一致。 - 如果使用HTTPS,尝试临时切换为HTTP测试(比如
http://localhost:5206,对应项目调试中的HTTP端口),排除SSL证书异常导致的连接拦截。
2. 配置跨域(CORS)策略
GET正常但POST失败,大概率是跨域配置未开放POST方法。在项目Startup.cs中补充CORS配置:
// 在ConfigureServices方法中添加 services.AddCors(options => { options.AddPolicy("AllowAllRequests", policy => { policy.AllowAnyOrigin() .AllowAnyHeader() .AllowAnyMethod(); // 或明确指定AllowMethods("GET", "POST") }); }); // 在Configure方法中启用(注意顺序:放在UseRouting之后,UseAuthorization之前) app.UseCors("AllowAllRequests");
3. 修正Ajax代码中的问题
移除嵌套的$(document).ready
你的insert函数内部嵌套了$(document).ready,会导致点击事件逻辑无法正确触发。调整代码结构:
$(document).ready(function() { // 绑定按钮点击事件(假设按钮id为submitBtn) $("#submitBtn").click(function() { var ownerCreate = { owner : $("input[name=emailfm]").val(), testModelArea : $("input[name=subjecttitle]").val() }; $.ajax({ url: "https://localhost:7206/api/Owner?locationId=" + $("input[name=firstname]").val(), type: "POST", data: JSON.stringify(ownerCreate), contentType: "application/json", // 替换headers写法,jQuery推荐直接用contentType属性 success:function(response){ // 后端返回的是字符串"Successfully created",不是数字1,修正判断逻辑 if(response === "Successfully created"){ alert("Data Added Successfully"); } else { alert("操作失败:" + response); } }, error: function(xhr, status, error) { // 新增错误回调,便于调试 console.log("错误状态:" + status); console.log("错误信息:" + error); console.log("响应内容:" + xhr.responseText); } }); }); });
4. 验证后端路由匹配
- 确认
OwnerController类上标注了正确的路由特性,比如:[Route("api/[controller]")] [ApiController] public class OwnerController : ControllerBase { // 你的CreateOwner方法 } - 检查
locationId参数是否能正常获取:确保$("input[name=firstname]").val()返回的是有效数字,避免后端参数绑定失败。
5. 排除防火墙/代理干扰
- 临时关闭本地防火墙,测试是否能正常连接。
- 如果使用了Fiddler、Charles等代理工具,暂时关闭代理,避免HTTPS请求被拦截。
内容的提问来源于stack exchange,提问作者cody
相关产品推荐
相关产品推荐

