标签: asp.net-core

升级到ASP.NET Core 2.0后无法创建迁移

升级到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

86
推荐指数
6
解决办法
7万
查看次数

访问ConfigureServices方法中的IHostingEnvironment

我需要检查ConfigureServices方法当前托管环境名称是否为"开发".

所以使用IHostingEnvironment.IsDevelopment()方法对我来说可能没问题,但与Configure方法不同,我没有IHostingEnvironment env.

asp.net-core

85
推荐指数
3
解决办法
2万
查看次数

在.net core 6中配置连接字符串

我正在尝试使用 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 中,我认识到StartupProgram类已合并为一个类。并且上面的代码在.NET 6中不可用。AddDbContext无法识别。那么您对此次更新以及如何在 .NET 6 中配置连接字符串有任何想法或文档吗?

c# asp.net-core asp.net-core-6.0 visual-studio-2022

85
推荐指数
2
解决办法
13万
查看次数

ASP.NET Core 2.0身份验证中间件

随着Core 1.1遵循@ blowdart的建议并实施了自定义中间件:

/sf/answers/2202565921/

它的工作方式如下:

  1. 中间件运行了.从请求标头中选取一个令牌.
  2. 验证了令牌,如果有效,则构建一个包含多个声明的身份(ClaimsIdentity),然后通过HttpContext.User.AddIdentity()添加;
  3. 在使用services.AddAuthorization的ConfigureServices中,我添加了一个策略来要求中间件提供的声明.
  4. 在控制器/操作中,我将使用[授权(角色="中间件添加的某些角色")]

这有点适用于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中我做同样的事情的正确途径是什么?我没有看到做真正的自定义身份验证的示例.

c# authentication asp.net-core asp.net-core-2.0

84
推荐指数
2
解决办法
5万
查看次数

.net Core 2.0 - 使用.NetFramework 4.6.1而不是目标框架.netCore 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'.此软件包可能与您的项目不完全兼容.

即使在抑制警告后,我仍然会收到错误,无法引用库.如何解决此参考?

非常容易重现:

  1. 新的.net核心2.0控制台应用程序
  2. 从上面的问题复制方法
  3. 尝试安装nuget包

.net c# tfs nuget asp.net-core

84
推荐指数
1
解决办法
7万
查看次数

如何在ASP.NET Core MVC中向asp标记助手添加链接参数

我对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)

c# url-parameters asp.net-core-mvc tag-helpers asp.net-core

81
推荐指数
3
解决办法
5万
查看次数

如何在ASP.NET Core中使用ILogger进行单元测试

这是我的控制器:

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)

c# unit-testing moq asp.net-core ilogger

81
推荐指数
10
解决办法
4万
查看次数

AspNet Core脚手架应用中的登录和注册页面在哪里?

在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-identity asp.net-core razor-pages

80
推荐指数
4
解决办法
3万
查看次数

找不到匹配命令"dotnet-ef"的可执行文件

我正在使用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)

entity-framework asp.net-core asp.net-core-1.0

79
推荐指数
6
解决办法
5万
查看次数

实体框架核心:DbContextOptionsBuilder'不包含'usesqlserver'的定义,也没有扩展方法'usesqlserver'

我是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)

entity-framework-core asp.net-core

79
推荐指数
13
解决办法
7万
查看次数