[英]Error developing web project + api + SQL Server + dotnet
我必须开发一个访问 SQL Server 表并在 HTTP-REST 上返回 JSON 的小项目。 我测试了一个直接项目来访问我的program.cs
直接数据库并且它有效,但是当我尝试集成一个基本的 Web API 项目时,我的项目并没有出现在索引或GET
路由中。
基本配置( appsettings.json
):
"ConnectionStrings": {
"ConnectAppDatabase": "Server=<my_domain>.database.windows.net;Database=<my_base>;user id=<my_user>;password=<my_password>"
}
轮播 ( launchSettings.json
)
..."connect_app": {
"commandName": "Project",
"launchBrowser": true,
"launchUrl": "connectAppController",
"applicationUrl": "https://localhost:5001;http://localhost:5000",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
}
(启动.cs)
public void ConfigureServices(IServiceCollection services)
{
services.AddDbContext<connectAppContext>(options => options.UseSqlServer(Configuration.GetConnectionString("ConnectAppDatabase")));
services.AddControllers();
}
在我的控制器中,索引只是一个静态页面,在 get 路由中我想返回一个查询
https://localhost:5001/api/connectapp/getmensage?codigo=<code_example>
namespace Controllers
{
[Route("api/[controller]")]
[ApiController]
public class connectAppController : Controller
{
private readonly connectAppContext _context;
public connectAppController(connectAppContext context)
{
_context = context;
}
public IActionResult Index()
{
Console.Write("Index");
Console.ReadLine();
return View();
}
[HttpGet("{codigo:length(12)}", Name = "getmessage")]
public ActionResult<byte[]> Get(string cod)
{
if (cod == null)
{
return NotFound();
}
var mensage = _context.mensages.FirstOrDefault(m => m.codigo == cod);
if (mensage == null)
{
return NotFound();
}
byte[] jsonUtf8Bytes;
var options = new JsonSerializerOptions
{
WriteIndented = true
};
jsonUtf8Bytes = JsonSerializer.SerializeToUtf8Bytes(mensage, options);
return jsonUtf8Bytes;
}
}
}
当我运行该项目时,它不会返回任何错误,但是当访问 url 时,我只会收到默认消息 404 - 找不到页面
shinier01@shinier01:~/Projetos/Connect-cargo/connect-app$ dotnet run info: Microsoft.Hosting.Lifetime[0]
Now listening on: https://localhost:5001 info: Microsoft.Hosting.Lifetime[0]
Now listening on: http://localhost:5000 info: Microsoft.Hosting.Lifetime[0]
Application started. Press Ctrl+C to shut down. info: Microsoft.Hosting.Lifetime[0]
Hosting environment: Development info: Microsoft.Hosting.Lifetime[0]
Content root path: /home/shinier01/Projetos/Connect-cargo/connect-app
有谁知道我做错了什么? 如果是手,我该如何连接 SQL Server 数据库? 或者我的功能中的一些配置/命令?
更新
从我的调试中可以看出,它在路由https://localhost:5001
上打开网络浏览器,出现错误消息,但从未通过Index()
中的断点
改变
[Route("api/[controller]")]
到
[Route("api")]
然后运行应用程序并调用
https://localhost:5001/api/getmessage?codigo=<cod_exemple>
我能够至少让我的页面访问路由并出现调试,但现在返回错误
invalidOperationException:没有注册类型为“Microsoft.AspNetCore.Mvc.ViewFeatures.ITempDataDictionaryFactory”的服务。
我评论了我的控制器
//[Route("api")]
//[ApiController]
并将其添加到我的 Startup.cs 配置
app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute(
name: "default",
pattern: "{controller=connectApp}/{action=Index}/");
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.