伙計們,我有一個簡單的后端代碼,我只是想集成 swagger ui,但它只能識別來自 6 的 3 個控制器和來自 7 的 3 個模式,但是當我嘗試使用郵遞員發出獲取請求時,它會給出 http 404 錯誤。我做錯了什么?我在 Visual Studio 2019 中使用 Win11 和 .net 5。
啟動.cs
public void ConfigureServices(IServiceCollection services)
{
services.AddControllers();
services.AddSwaggerGen(c =>
{
c.SwaggerDoc("v1", new OpenApiInfo { Title = "SwaggerApi", Version = "v1" });
});
services.AddCors();
services.AddHttpContextAccessor();
services.AddSwaggerGen();
services.AddDependencyResolvers(new ICoreModule[] {
new CoreModule()
});
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseCors(builder => builder.WithOrigins("http://localhost:5000").AllowAnyHeader());
app.UseHttpsRedirection();
app.UseWebSockets();
app.UseRouting();
app.UseAuthentication();
app.UseStaticFiles();
app.UseAuthorization();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers();
});
app.UseSwagger();
app.UseSwaggerUI(c =>
{
c.SwaggerEndpoint("/swagger/v1/swagger.json", "Sample API");
});
程式.cs
public static void Main(string[] args)
{
CreateHostBuilder(args).Build().Run();
}
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.UseServiceProviderFactory(new AutofacServiceProviderFactory())
.ConfigureContainer<ContainerBuilder>(builder =>
{
builder.RegisterModule(new AutofacBusinessModule());
})
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
});
編輯:我沒有放置我的控制器
這是公認的控制器示例 usersController.cs
[Route("api/[controller]")]
[ApiController]
public class UsersController : ControllerBase
{
private IUserService _userService;
public UsersController(IUserService userService)
{
_userService = userService;
}
[HttpGet("getall")]
public IActionResult Get()
{
var result = _userService.GetAll();
if (result.Success)
{
return Ok(result.Data);
}
return BadRequest(result.Message);
}
[HttpGet("getbyid")]
public IActionResult Get(int id)
{
var result = _userService.GetById(id);
if (result.Success)
{
return Ok(result);
}
return BadRequest(result.Message);
}
[HttpPost("add")]
public IActionResult PostAdd(User user)
{
var result = _userService.Add(user);
if (result.Success)
{
return Ok(result.Message);
}
return BadRequest(result.Message);
}
[HttpPost("update")]
public IActionResult PostUpdate(User user)
{
var result = _userService.Update(user);
if (result.Success)
{
return Ok(result);
}
return BadRequest(result.Message);
}
[HttpPost("delete")]
public IActionResult PostDelete(User user)
{
var result = _userService.Delete(user);
if (result.Success)
{
return Ok(result);
}
return BadRequest(result.Message);
}
}
這不是公認的樣本
systemStavesController.cs
[Route("api/[controller]")]
[ApiController]
public class SystemStavesController : ControllerBase
{
private ISystemStaffService _staffService;
public SystemStavesController(ISystemStaffService staffService)
{
_staffService = staffService;
}
[HttpGet("getall")]
IActionResult GetAll()
{
var result = _staffService.GetAll();
if (result.Success)
{
return Ok(result.Data);
}
return BadRequest(result.Message);
}
[HttpGet("getbyid")]
IActionResult GetById(int id)
{
var result = _staffService.GetById(id);
if (result.Success)
{
return Ok(result.Data);
}
return BadRequest(result.Message);
}
[HttpPost("add")]
IActionResult Add(SystemStaff staff)
{
var result = _staffService.Add(staff);
if (result.Success)
{
return Ok(result.Message);
}
return BadRequest(result.Message);
}
[HttpPost("delete")]
IActionResult Delete(SystemStaff staff)
{
var result = _staffService.Delete(staff);
if (result.Success)
{
return Ok(result.Message);
}
return BadRequest(result.Message);
}
[HttpPost("update")]
IActionResult Update(SystemStaff staff)
{
var result = _staffService.Update(staff);
if (result.Success)
{
return Ok(result.Message);
}
return BadRequest(result.Message);
}
}
uj5u.com熱心網友回復:
我可以注意到的控制器之間的一個區別是有效的和不有效的控制器之間SytemStavesController沒有任何方法的訪問修飾符,而UsersController所有宣告的方法都具有public訪問權限。可能是允許您訪問控制器端點的限制級別。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/483043.html
標籤:C# 网 休息 iis-express
