升级到ASP.NET Core 2.0后,我似乎无法再创建迁移.
我越来越
"在类'Program'上调用方法'BuildWebHost'时发生错误.继续没有应用服务提供者.错误:发生了一个或多个错误.(无法打开登录请求的数据库"...".登录失败.登录用户'...'失败
和
"无法创建'MyContext'类型的对象.将'IDesignTimeDbContextFactory'的实现添加到项目中,或者参见 https://go.microsoft.com/fwlink/?linkid=851728以获取在设计时支持的其他模式."
我之前运行的命令是$ dotnet ef migrations add InitialCreate --startup-project "..\Web"(来自带有DBContext的项目/文件夹).
连接字符串: "Server=(localdb)\\mssqllocaldb;Database=database;Trusted_Connection=True;MultipleActiveResultSets=true"
这是我的Program.cs
public class Program
{
public static void Main(string[] args)
{
BuildWebHost(args).Run();
}
public static IWebHost BuildWebHost(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseStartup<Startup>()
.Build();
}
Run Code Online (Sandbox Code Playgroud) c# entity-framework-core asp.net-core-mvc asp.net-core asp.net-core-2.0
我需要检查ConfigureServices方法当前托管环境名称是否为"开发".
所以使用IHostingEnvironment.IsDevelopment()方法对我来说可能没问题,但与Configure方法不同,我没有IHostingEnvironment env.
我正在尝试使用 SQL Server 连接到我的 ASP.NET Core Web API 应用程序(Visual Studio 2022 预览版中的 .NET 6)。Startup我尝试像以前一样使用以下代码在类中配置连接字符串。
services.AddDbContext<DEMOWTSSPortalContext>(options =>
options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));
Run Code Online (Sandbox Code Playgroud)
但在 .NET 6 中,我认识到Startup和Program类已合并为一个类。并且上面的代码在.NET 6中不可用。AddDbContext无法识别。那么您对此次更新以及如何在 .NET 6 中配置连接字符串有任何想法或文档吗?
随着Core 1.1遵循@ blowdart的建议并实施了自定义中间件:
它的工作方式如下:
这有点适用于2.0,除了如果令牌无效(上面的步骤2)并且从未添加声明我得到"没有指定authenticationScheme,并且没有找到DefaultChallengeScheme."
所以现在我正在读取2.0中的auth更改:
https://docs.microsoft.com/en-us/aspnet/core/migration/1x-to-2x/identity-2x
在ASP.NET Core 2.0中我做同样的事情的正确途径是什么?我没有看到做真正的自定义身份验证的示例.
我有一个.net核心2.0控制台应用程序.我正在尝试使用以下内容从TFS读取文件:
如何将文件从TFS直接导入内存(即,不想从文件系统读入内存)?
我前往nuget并安装Microsoft.TeamFoundationServer.ExtendedClient并遇到这个问题:
使用'.NETFramework,Version = v4.6.1'而不是项目目标框架'.NETCoreApp,Version = v2.0'恢复包'Microsoft.AspNet.WebApi.Client 5.2.2'.此软件包可能与您的项目不完全兼容.
即使在抑制警告后,我仍然会收到错误,无法引用库.如何解决此参考?
非常容易重现:
我对ASP.NET MVC 1-5有很多经验.现在我学习ASP.NET Core MVC并且必须将参数传递给页面中的链接.例如,我有以下Action
[HttpGet]
public ActionResult GetProduct(string id)
{
ViewBag.CaseId = id;
return View();
}
Run Code Online (Sandbox Code Playgroud)
如何使用标记帮助程序实现此操作的链接?
<a asp-controller="Product" asp-action="GetProduct">ProductName</a>
Run Code Online (Sandbox Code Playgroud) 这是我的控制器:
public class BlogController : Controller
{
private IDAO<Blog> _blogDAO;
private readonly ILogger<BlogController> _logger;
public BlogController(ILogger<BlogController> logger, IDAO<Blog> blogDAO)
{
this._blogDAO = blogDAO;
this._logger = logger;
}
public IActionResult Index()
{
var blogs = this._blogDAO.GetMany();
this._logger.LogInformation("Index page say hello", new object[0]);
return View(blogs);
}
}
Run Code Online (Sandbox Code Playgroud)
如你所见,我有2个依赖项,a IDAO和aILogger
这是我的测试类,我使用xUnit来测试和Moq来创建mock和stub,我可以DAO轻松模拟,但是ILogger我不知道该怎么做所以我只是传递null并注释掉调用登录控制器当跑步测试.有没有办法测试,但仍然以某种方式保持记录器?
public class BlogControllerTest
{
[Fact]
public void Index_ReturnAViewResult_WithAListOfBlog()
{
var mockRepo = new Mock<IDAO<Blog>>();
mockRepo.Setup(repo => repo.GetMany(null)).Returns(GetListBlog());
var controller = new BlogController(null,mockRepo.Object);
var result = controller.Index(); …Run Code Online (Sandbox Code Playgroud) 在VS 2017中,我创建了一个新的ASP.NET核心Web应用程序.在向导的第二页上,我选择了Web应用程序,对于身份验证,我选择了"个人用户帐户".
现在,我正在尝试找到与/ Account/Register和/ Account/Login相关联的页面.
_Layout.cshtml引入_LoginPartial.cshtml,就像在经典MVC中一样:
<div class="navbar-collapse collapse">
<ul class="nav navbar-nav">
<li><a asp-page="/Index">Home</a></li>
<li><a asp-page="/About">About</a></li>
<li><a asp-page="/Contact">Contact</a></li>
</ul>
<partial name="_LoginPartial" />
</div>
Run Code Online (Sandbox Code Playgroud)
如果用户未登录,则_LoginPartial包含<a>指向登录和注册页面的标记:
<ul class="nav navbar-nav navbar-right">
<li><a asp-area="Identity" asp-page="/Account/Register">Register</a></li>
<li><a asp-area="Identity" asp-page="/Account/Login">Login</a></li>
</ul>
Run Code Online (Sandbox Code Playgroud)
这一切似乎都有道理.但我希望Areas文件夹结构包含Register和Login文件夹.它不是.我发现的唯一的东西是_ViewStart.cshtml
我知道脚手架代码有效,当我运行项目时,Register链接指向"/ Identity/Account/Register",Login链接指向"/ Identity/Account/Login".点击注册链接可以获得一个注册页面,其中包含"创建新帐户"文本.
但我无法在项目的任何地方找到"创建新帐户"文本.
有人能告诉我我错过了什么吗?
我正在使用ASP.Net Core RC2 Microsoft.EntityFramework.Core和SQLite 来做项目示例.
我已经按照本教程:https: //damienbod.com/2015/08/30/asp-net-5-with-sqlite-and-entity-framework-7/
但是,当我运行此命令时:
dotnet ef migrations add FirstMigration
Run Code Online (Sandbox Code Playgroud)
我收到了这个错误:
No executable found matching command "dotnet-ef"
Run Code Online (Sandbox Code Playgroud)
这是我的project.json配置:
{
"dependencies": {
"Microsoft.NETCore.App": {
"version": "1.0.0-rc2-3002702",
"type": "platform"
},
"Microsoft.AspNetCore.Mvc": "1.0.0-rc2-final",
"Microsoft.AspNetCore.Server.IISIntegration": "1.0.0-rc2-final",
"Microsoft.AspNetCore.Server.Kestrel": "1.0.0-rc2-final",
"Microsoft.Extensions.Configuration.EnvironmentVariables": "1.0.0-rc2-final",
"Microsoft.Extensions.Configuration.FileExtensions": "1.0.0-rc2-final",
"Microsoft.Extensions.Configuration.Json": "1.0.0-rc2-final",
"Microsoft.Extensions.Logging": "1.0.0-rc2-final",
"Microsoft.Extensions.Logging.Console": "1.0.0-rc2-final",
"Microsoft.Extensions.Logging.Debug": "1.0.0-rc2-final",
"Microsoft.EntityFrameworkCore": "1.0.0-rc2-final",
"Microsoft.EntityFrameworkCore.Sqlite": "1.0.0-rc2-final"
},
"tools": {
"Microsoft.AspNetCore.Server.IISIntegration.Tools": {
"version": "1.0.0-preview1-final",
"imports": "portable-net45+win8+dnxcore50"
}
},
"frameworks": {
"netcoreapp1.0": {
"imports": [
"dotnet5.6",
"dnxcore50",
"portable-net45+win8"
]
} …Run Code Online (Sandbox Code Playgroud) 我是EF核心的新手,我正试图让它与我的asp.net核心项目一起工作.
startup.cs在尝试配置dbcontext以使用来自config的连接字符串时,我得到了上述错误.我正在关注本教程:https://docs.microsoft.com/en-us/aspnet/core/data/ef-mvc/intro
startup.cs中有问题的代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.SpaServices.Webpack;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using Microsoft.EntityFrameworkCore;
using tracV2.models;
using tracV2.data;
namespace tracV2
{
public class Startup
{
// This method gets called by the runtime. Use this method to add services to the container.
public void ConfigureServices(IServiceCollection services)
{
// Add framework services.
services.AddMvc();
services.AddSingleton<IConfiguration>(Configuration);
string conn = Configuration.GetConnectionString("optimumDB");
services.AddDbContext<tracContext>(options => options.usesqlserver(conn));
}
Run Code Online (Sandbox Code Playgroud)
usesqlserver如果我将其直接放入上下文中,则会识别该方法:
using System; …Run Code Online (Sandbox Code Playgroud) asp.net-core ×10
c# ×6
.net ×1
ilogger ×1
moq ×1
nuget ×1
razor-pages ×1
tag-helpers ×1
tfs ×1
unit-testing ×1