WebApi
1、asp.net core 和asp.net framework
ASP.NET Core和ASP.NET Framework都是由Microsoft开发的Web应用程序框架,但它们有一些关键的区别。以下是它们之间的一些主要区别:
- 跨平台性:
- ASP.NET Core: 完全跨平台,可以在Windows、Linux和macOS上运行。这使得在不同操作系统上部署和运行应用程序更为灵活。
- ASP.NET Framework: 主要针对Windows平台。尽管有一些尝试将ASP.NET Framework应用程序移植到非Windows平台的工具,但它并不像ASP.NET Core那样天生具备跨平台支持。
- 开发模型:
- ASP.NET Core: 引入了新的、更轻量级的开发模型,支持更灵活的应用程序部署和维护。它是一个开源框架,具有更快的性能和更好的可测试性。
- ASP.NET Framework: 是一个传统的、较为庞大的框架,支持多种应用程序类型(Web、桌面、服务等)。由于历史原因,它可能包含一些不太灵活或过时的特性。
- NuGet包管理:
- ASP.NET Core: 使用NuGet作为主要的包管理系统,允许在项目中选择性地添加或删除组件。
- ASP.NET Framework: 使用NuGet包,但在早期版本中,它主要依赖于全局安装的.NET Framework版本。
- 性能:
- ASP.NET Core: 针对性能进行了优化,具有更快的启动时间和更高的吞吐量。它还包含了一些新的特性,如Kestrel服务器,这是一个高性能的跨平台Web服务器。
- ASP.NET Framework: 相对较为庞大,启动时间较长,性能较低。
- 版本控制:
- ASP.NET Core: 使用语义化版本控制(Semantic Versioning),并且采用了更加灵活的发布模型。
- ASP.NET Framework: 采用了传统的版本控制方式,通常与Windows操作系统版本相关联。
2、[ApiController]特性
前端
document.querySelector("#Post").onclick = function () {
var userName = "Ace";
var postData = `name=${userName}`
axios.post("https://localhost:44326/home",{name:userName,age:18}).then(function (res) {
console.log(res.data);
})
}
后端
[HttpPost]
public string Post(UserInput userInput)
{
//if (ModelState.IsValid)
//{
// return BadRequest(ModelState);
//}
return "这是Post";
}
当不使用ApiController特性:后端收到的userInput为空
当使用ApiController特性:userInput为前端传入的对象
ApiController特性的作用:
1.ApiController可以自动推断参数的模型绑定,所以不需要我们在对参数指定[FromBody]或者[FromData],ApiController可以帮助我们自动验证模型状态,如果验证不通过会自动返回400
3、formdata和json的区别
4、axios的几种传参
5、跨域问题
跨域,指的是浏览器不能执行其他网站的脚本。它是由浏览器的同源策略造成的,是****浏览器施加的****安全限制
同源策略规定:
- 协议相同
- 域名相同
- 端口相同
http://www.123.com/index.html 调用 http://www.123.com/server.php (非跨域)
http://www.123.com/index.html 调用 http://www.456.com/server.php (主域名不同:123/456,跨域)
http://abc.123.com/index.html 调用 http://def.123.com/server.php (子域名不同:abc/def,跨域)
http://www.123.com:8080/index.html 调用 http://www.123.com:8081/server.php (端口不同:8080/8081,跨域)
http://www.123.com/index.html 调用 https://www.123.com/server.php (协议不同:http/https,跨域)
请注意:localhost和127.0.0.1虽然都指向本机,但也属于跨域。

asp.net core 解决跨域的问题:
在ASP.NET Core中,解决跨域问题主要通过配置CORS(Cross-Origin Resource Sharing)来实现。CORS是一种安全机制,允许或阻止在不同域之间的资源共享。
以下是在ASP.NET Core中解决跨域问题的一般步骤:
-
安装Microsoft.AspNetCore.Cors NuGet包: 在项目中安装
Microsoft.AspNetCore.CorsNuGet包。可以通过Visual Studio的NuGet包管理器或者使用命令行工具执行以下命令来安装:dotnet add package Microsoft.AspNetCore.Cors -
在Startup.cs中配置CORS: 打开
Startup.cs文件,找到ConfigureServices方法,并添加如下配置:public void ConfigureServices(IServiceCollection services) { services.AddCors(options => { options.AddPolicy("AllowAnyOrigin", builder => { builder.AllowAnyOrigin() .AllowAnyMethod() .AllowAnyHeader(); }); }); // 其他服务配置... }这段代码创建了一个名为 "AllowAnyOrigin" 的CORS策略,该策略允许任何来源、任何HTTP方法和任何HTTP头部的请求。你可以根据需要配置更复杂的策略。
-
在Configure方法中启用CORS中间件: 在
Configure方法中添加以下代码启用CORS中间件:public void Configure(IApplicationBuilder app, IHostingEnvironment env) { // 其他中间件配置... app.UseCors("AllowAnyOrigin"); // 其他配置... }UseCors方法指定了之前定义的CORS策略的名称("AllowAnyOrigin"),确保CORS中间件在请求管道中的正确位置。
4.添加特性 [EnableCors("any")]
完成以上步骤后,应用程序就配置好了基本的CORS,允许来自任何来源的请求。
参考文章: