1、以ASP.NET Core WebApi项目(Programs.cs)为例
builder.Services.AddControllers();
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();
# region 依赖注入问题
builder.Services.AddSingleton<IUserBll, UserBll>();
builder.Services.AddSingleton<IPostsBll, PostsBll>();
# endregion
# region 跨域问题
builder.Services.AddCors(options =>
{
options.AddPolicy("AllowSpecificOrgin",
builder => builder.WithOrigins("http://localhost:8085")
.AllowAnyMethod()
.AllowAnyHeader());
options.AddPolicy("any", p => p.AllowAnyHeader().AllowAnyOrigin().AllowAnyMethod());
});
# endregion
var app = builder.Build();
if (app.Environment.IsDevelopment())
{
app.UseSwagger();
app.UseSwaggerUI();
}
app.UseCors("AllowSpecificOrgin");
app.UseCors("any");
app.UseHttpsRedirection();
app.UseAuthorization();
app.MapControllers();
app.Run();
2、指定某控制器使用跨域
[Route("[controller]/[action]")]
[ApiController]
[EnableCors("any")]
public class LoginController : ControllerBase{
[HttpGet("{userNo}/{passWord}")]
public MyBBSDB_Users GetLoginRes(string userNo, string passWord)
{
return null;
}
}
3、依赖注入(定义接口和实现)
public interface IUserBll
{
List<MyBBSDB_Users> GetUserByUserNoAndPassword(string userNo, string password);
List<MyBBSDB_Users> GetUserByUserNoAndAutoLoginTag(string userNo, Guid autoLoginTag);
}
....
public class UserBll : IUserBll
{
private UserDal userDal = new UserDal();
public List<MyBBSDB_Users> GetUserByUserNoAndPassword(string userNo, string password)
{
return userDal.GetUserByUserNoAndPassword(userNo, password);
}
public List<MyBBSDB_Users> GetUserByUserNoAndAutoLoginTag(string userNo, Guid autoLoginTag)
{
return userDal.GetUserByUserNoAndAutoLoginTag(userNo, autoLoginTag);
}
...
}
4、在Programs.cs注册依赖注入
builder.Services.AddSingleton<IUserBll, UserBll>();
builder.Services.AddSingleton<IPostsBll, PostsBll>();
5、在控制器API中使用
[Route("[controller]/[action]")]
[ApiController]
[EnableCors("any")]
public class LoginController : ControllerBase
{
private readonly IUserBll _iUserBll;
public LoginController(IUserBll iUserBll)
{
_iUserBll = iUserBll;
}
...
[HttpPost]
public string Insert(MyBBSDB_Users users)
{
users.UserLevel = 0;
users.IsDelete = false;
users.Password = users.Password.ToMd5();
return _iUserBll.AddUsers(users) > 0 ? "添加成功!" : "添加失败!";
}
}