小编Rob*_*ean的帖子

无法加载文件或程序集Microsoft.Extensions.DependencyInjection.Abstractions,Version = 1.1.0.0

更新到新包Microsoft.EntityFrameworkCore.SqlServer 1.1.2后,我尝试创建DBContext时出错:

System.IO.FileLoadException发生HResult = 0x80131040
Message =无法加载文件或程序集'Microsoft.Extensions.DependencyInjection.Abstractions,Version = 1.1.0.0,Culture = neutral,PublicKeyToken = adb9793829ddae60'或其依赖项之一.定位的程序集的清单定义与程序集引用不匹配.(来自HRESULT的异常:0x80131040)Source = Microsoft.EntityFrameworkCore StackTrace:位于C:\ src\backend \中Services.Infrastructure.Data.SqlServerDbContext..ctor(DatabaseOptions databaseOptions)的Microsoft.EntityFrameworkCore.DbContext..ctor(DbContextOptions选项) Packages\Services.Infrastructure\Data\SqlServerDbContext.cs:位于C:\ src\backend\Modules\Translations\Translations.Api\Data\TranslationsDbContext.cs中Translations.Api.Data.TranslationsDbContext..ctor(DatabaseOptions databaseOptions)的第16行:第16行

我的基础DbContext

public class SqlServerDbContext : DbContext
{
    private readonly DatabaseOptions _databaseOptions;

    protected SqlServerDbContext(DatabaseOptions databaseOptions)
    {
        if (string.IsNullOrEmpty(databaseOptions.ConnectionString))
            throw new Exception("Database connection string is missed.");

        _databaseOptions = databaseOptions;
    }

    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
        optionsBuilder.UseSqlServer(_databaseOptions.ConnectionString);
    }
}
Run Code Online (Sandbox Code Playgroud)

我使用的数据库选项

public class DatabaseOptions
{
    public string ConnectionString { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我创建上下文实例的地方

 var dbOptions = new DatabaseOptions { ConnectionString …
Run Code Online (Sandbox Code Playgroud)

.net c# entity-framework entity-framework-core .net-core

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

Service Fabric System.BadImageFormatException

我下载了最新版本的Service Fabric SDK 2.4.164并尝试创建一个新的简单无状态服务.构建成功但是当我运行它来调试我得到:

未知模块中出现未处理的"System.BadImageFormatException"类型异常.

附加信息:无法加载文件或程序集'System.Fabric,Version = 5.0.0.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35'或其依赖项之一.尝试加载格式不正确的程序.

问题是什么?请帮忙解决这个问题.如果我必须添加更多信息,请告诉我

.net azure azure-service-fabric

6
推荐指数
2
解决办法
2063
查看次数

使用客户端凭据流进行Swashbuckle OAuth2授权

我使用Swashbuckle来记录WebAPI控制器.我还使用OAuth2和Client Credentials Flow.所以授权我需要传递 client_idclient_secret.

我有以下代码:

config.EnableSwagger(c => {
    c.SingleApiVersion("v1", "My API");
    c.OAuth2("oauth2")
        .Flow("application")
        .TokenUrl("/oauth2/token");
    c.OperationFilter<AssignOAuthSecurityRequirements>();
})
.EnableSwaggerUi(c => {
    c.EnableOAuth2Support(clientId: "clientIdValue", clientSecret:"clientSecretValue", "", "");
    c.CustomAsset("index", Assembly.GetExecutingAssembly(), "WebAPI.Swagger.UI.index.html");
});
Run Code Online (Sandbox Code Playgroud)

授权工作正常但我client_idclient_secret值是硬编码的(clientIdValue,clientSecretValue).如何在此对话框中添加用户输入值的可能性?谁能帮我?

在此输入图像描述

如果我还需要发布代码,请告诉我AssignOAuthSecurityRequirements.在此先感谢所有人

javascript c# swagger swagger-ui swashbuckle

6
推荐指数
1
解决办法
2004
查看次数

当env变量发生更改时重新加载配置

在Startup.cs文件中我有

public Startup(IHostingEnvironment env)
{
    var builder = new ConfigurationBuilder()
        .SetBasePath(env.ContentRootPath)
        .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)            
        .AddEnvironmentVariables();
    Configuration = builder.Build();
}
Run Code Online (Sandbox Code Playgroud)

有配置的appsettings.json文件.喜欢 :

{
  "Log" : {
     "Type" : "value from appsettings.json"
   }
}
Run Code Online (Sandbox Code Playgroud)

reloadOnChange设置为true,所以,当我更改appsettings.json然后我立即在我的程序中得到一个新的日志类型值.

但是我使用Docker和docker-compose并通过env变量传递设置值.我的docker-compose.override.yml文件是:

version: '3.7'

services:

  myservice:
    environment:
      ASPNETCORE_ENVIRONMENT: Development
      Log__Type: "value from docker-compose"
Run Code Online (Sandbox Code Playgroud)

要运行我使用`docker-compose up.现在我的应用程序的值为"docker-compose的值",用于日志类型.

问题:有没有办法Log__Type在运行时更改env variable()的值(不重新启动docker容器)并在我的应用程序中重新加载配置,就像使用reloadOnChange和appsettings.json一样?

我尝试连接到container(docker exec)并设置env变量的新值

printenv Log__Type  // -> value from docker-compose
export Log__Type=new value 
printenv …
Run Code Online (Sandbox Code Playgroud)

c# docker docker-compose asp.net-core

6
推荐指数
1
解决办法
509
查看次数

调试Nuget包不起作用

我正在尝试创建一个调试器nuget包.所以,我从"创建符号包"开始.使用创建包 nuget pack PackageARM.nuspec -Symbols

PackageARM.nuspec:

<?xml version="1.0" encoding="utf-8"?>
<package xmlns="http://schemas.microsoft.com/packaging/2012/06/nuspec.xsd">
  <metadata>
    <id>PackageARM</id>
    <version>1.0.15</version>
    <authors>PackageARM</authors>
    <owners>PackageARM</owners>
    <requireLicenseAcceptance>false</requireLicenseAcceptance>
    <description>Package Description</description>
    <dependencies>
      <group targetFramework=".NETStandard2.0" />
    </dependencies>
  </metadata>
  <files>
        <file src="bin\Release\netstandard2.0\*.pdb" target="lib\netstandard2.0" />
        <file src="bin\Release\netstandard2.0\*.dll" target="lib\netstandard2.0" />
        <file src="**\*.cs"  target="src" />
    </files>
</package>
Run Code Online (Sandbox Code Playgroud)

并将其推向nuget:https://www.nuget.org/packages/PackageARM/1.0.15

然后取消选中Enable Just My Code并检查Enable source server supportVS 2017.此外,我尝试添加符号服务器:https://www.nuget.org,https: //nuget.smbsrc.net/但没有结果.

当我尝试从包使用F11进入方法时,它只是步骤到下一行.我错过了什么?

我的pdb文件包含.cs文件的路径,即'C:\ project\ProjectARM\Class1.cs'可以吗?如果没有源路径,其他用户如何调试?

c# debugging visual-studio nuget

5
推荐指数
1
解决办法
465
查看次数

使用正确的键名称添加 ModelState 错误

我有一个简单的模型,例如:

public class Employer 
{
    [Required(ErrorMessage = "Please specify id")]
    public int Id { get; set; }

    [MaxLength(256, ErrorMessage = "Max lenght should be less than 256")]
    [Required(ErrorMessage = "Please specify Name")]
    public string Name { get; set; }

    [Required(ErrorMessage = "Please specify id of organization")]
    public int OrganizationId { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

那么控制器是:

public IHttpActionResult Post(Employer employer)
{
    if(!IsActiveOrganization(employer.OrganizationId))
    {
        ModelState.AddModelError(nameof(employer.OrganizationId), "The organization is not active!");
    }
    if (!ModelState.IsValid)
    {
        return BadRequest(ModelState);
    }
}
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,我正在尝试在创建新雇主之前验证模型。因此,当我传递无效模型时id,响应将如下:

{ …
Run Code Online (Sandbox Code Playgroud)

c# validation asp.net-mvc modelstate asp.net-web-api

1
推荐指数
1
解决办法
3114
查看次数