我有一个ASP.NET MVC应用程序作为Hangfire客户端 - 它排队不同的工作.我正在使用SqlServerJobStorageHangfire.
目前我正在处理一个与Hangfire数据库没有连接的情况,并且未来连接的某个地方正在实例化.
目标是我的ASP.NET MVC应用程序应该在此之前继续工作.连接恢复后,它应该开始排队作业.
因此,应用程序将抛出异常Global.asax:
Hangfire.GlobalConfiguration.Configuration.UseSqlServerStorage("EshopServiceHangfire");
Run Code Online (Sandbox Code Playgroud)
此外,所有工作队列也会抛出异常:
BackgroundJob.Enqueue<ISomeClass>(x => x.DoSomethingGreat(JobCancellationToken.Null));
Run Code Online (Sandbox Code Playgroud)
我把行Global.asax放在try/catch块中,所以它不会抛出.当有人排队工作时,我想检查一下JobStorage.Current,如果它没有初始化,我会尝试使用相同的代码再次启动它:
Hangfire.GlobalConfiguration.Configuration.UseSqlServerStorage("EshopServiceHangfire");
Run Code Online (Sandbox Code Playgroud)
有人知道这样做的方法吗?文档没有关于此的信息.
有点像Hangfire.GlobalConfiguration.JobStorage.IsInitialized?
从Job enqueue捕获异常也是一种方式,但我不喜欢它,因为它抛出非特定的
InvalidOperationException:尚未初始化JobStorage.Current属性值.您必须在使用Hangfire客户端或服务器API之前进行设置.
非常感谢那些读过这个地方的人)
我有一个2.8.2 RabbitMQ服务器和一个2.8.2客户端DLL,有代码来声明一个队列并得到一条消息,它工作正常(所有参数都正确):
IModel channel=null;
ConnectionFactory factory = new ConnectionFactory ();
factory.HostName = "192.168.68.4";
_QueueName = "172.16.1.1";
factory.UserName = "guest";
factory.Password = "guest";
factory.VirtualHost = "/";
factory.RequestedHeartbeat = 30;
if (factory.Endpoint == null) {
Console.WriteLine (" factory.Endpoint==null ");
}
// ?????????????IP??
_QueueName = "172.16.1.1";
_RMQConnection = factory.CreateConnection ();
Console.WriteLine ("factory.CreateConnection()");
channel = _RMQConnection.CreateModel ();
channel.QueueDeclare(_QueueName, false, false,false,null);
Run Code Online (Sandbox Code Playgroud)
但是,当我下载3.0.1 RabbitMQ服务器和3.0.1客户端DLL时,我使用相同的代码并具有异常:
AMQP操作被中断:AMQP关闭原因,由Peer启动,代码= 406,text ="PRECONDITION_FAILED - vhost中队列'172.16.1.1'的参数'/'不等同",classId = 50,methodId = 10,原因=
我有一个ConfigurationDbContext我想要使用的.它有多个参数,DbContextOptions和ConfigurationStoreOptions.
如何将此DbContext添加到ASP.NET Core中的服务?
我在Startup.cs中尝试了以下内容:
ConfigureServices
....
services.AddDbContext<ConfigurationDbContext>(BuildDbContext(connString));
....
private ConfigurationDbContext BuildDbContext(string connString)
{
var builder = new DbContextOptionsBuilder<ConfigurationDbContext>();
builder.UseSqlServer(connString);
var options = builder.Options;
return new ConfigurationDbContext(options, new ConfigurationStoreOptions());
}
Run Code Online (Sandbox Code Playgroud) c# entity-framework dependency-injection entity-framework-core asp.net-core
我的要求:编写一个中间件,用于过滤来自另一个后续中间件(例如Mvc)的响应中的所有"坏词".
问题:响应的流式传输.因此,当我们FilterBadWordsMiddleware从已经写入响应的后续中间件回到我们的时候,我们对派对来说太迟了......因为响应已经开始发送,这导致了众所周知的错误response has already started......
因此,这是许多不同情况下的要求 - 如何处理它?
我正在使用Net Core Web API,需要返回属性名称为“ $ skip”的有效负载。我尝试使用DataAnnotations:
public class ApiResponseMessage
{
[Display(Name ="$skip", ShortName = "$skip")]
public int Skip { get; set; }
[Display(Name = "$top", ShortName = "$top")]
public int Top { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
在我的控制器中,我只是使用
return Json(payload)
Run Code Online (Sandbox Code Playgroud)
但是,我的响应有效负载如下所示:
"ResponseMsg": {
"Skip": 0,
"Top": 3
}
Run Code Online (Sandbox Code Playgroud)
我需要它是:
"ResponseMsg": {
"$skip": 0,
"$top": 3
}
Run Code Online (Sandbox Code Playgroud)
解决此问题的最佳选择是什么?我需要编写自己的ContractResolver或Converter吗?
我正在使用控制台应用程序尝试 .NET core,但我一直坚持从 .NET Core 读取内容appsettings.json。这是我的代码:
{
"ConnectionStrings": {
"DataBaseConnectionString": "Server=xxxxxx"
}
}
Run Code Online (Sandbox Code Playgroud)
...
var builder = new ConfigurationBuilder()
// .SetBasePath("")
.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
.AddEnvironmentVariables();
configuration = builder.Build();
var xx = configuration.GetConnectionString("DataBaseConnectionString");
Run Code Online (Sandbox Code Playgroud)
我的值为 null xx,我做错了什么?谢谢
我尝试在我的项目中使用EF和MySQL.我补充说:
MySql.Data.EntityFrameworkCore
MySql.Data.EntityFrameworkCore.Design
进入我project.json的工具部分project.json是空的.当我跑:
Scaffold-DbContext "myconnectionstr" MySql.Data.EntityFrameworkCore -OutputDir Models -StartupProject "myproject"
Run Code Online (Sandbox Code Playgroud)
控制台显示错误:
无法在提供程序集MySql.Data.EntityFrameworkCore中找到名为DesignTimeProviderServicesAttribute的预期程序集属性
当我发布我的 ASP .Net Core 1.1 MVC Web 应用程序时,我看到 Publish 文件夹包含一个Web.config文件,我可以在其中设置stdoutLogEnabled等。但是,在开发时我根本看不到这个文件 - 看起来它是在什么时候生成的发布...因此,我如何在此文件中设置变量而不必在每次发布后手动编辑文件?
这段代码工作正常:
string json = @"{""MyProperty"" : ""bar""}";
var payload = JsonConvert.DeserializeObject<dynamic>(json);
string typedProperty = payload.MyProperty; //contains "bar"
Run Code Online (Sandbox Code Playgroud)
让我们尝试对 Snake_case JSON 执行相同的操作。我们添加了一个SnakeCaseNamingStrategy实际上是处理snake_case的推荐方法。
_snakeSettings = new JsonSerializerSettings()
{
ContractResolver = new UnderscorePropertyNamesContractResolver()
};
public class UnderscorePropertyNamesContractResolver : DefaultContractResolver
{
public UnderscorePropertyNamesContractResolver()
{
NamingStrategy = new SnakeCaseNamingStrategy();
}
}
Run Code Online (Sandbox Code Playgroud)
然后,将设置应用到DeserializeObject呼叫。如果反序列化为静态类型,这些设置将成功应用于 Snake_case JSON:
string snakeJson = @"{""my_property"" : ""bar""}";
var payload = JsonConvert.DeserializeObject<Payload>(snakeJson, _snakeSettings);
string typedProperty = payload.MyProperty; //contains "bar"
Run Code Online (Sandbox Code Playgroud)
好的,将目标类型切换为dynamic:
var payload = JsonConvert.DeserializeObject<dynamic>(snakeJson, _snakeSettings);
string …Run Code Online (Sandbox Code Playgroud) 我正在制作一个ASP.NET Core 1.1应用程序并尝试设置本地化.
当我在我ValuesController的实现上IStringLocalizer它工作正常并本地化我的资源文件.
public ValuesController(IStringLocalizer<ValuesController> localizer, IService<BaseEntity> service)
{
_localizer = localizer;
_service = service;
}
Run Code Online (Sandbox Code Playgroud)
上面的代码在"Resources/Controllers/ValuesController.en-US.resx"中找到我的资源.
但是,当我尝试注入IStringLocalizer一个通用服务时,它无法找到我的资源文件.
public class Service<T> : IService<T>
where T : BaseEntity
{
#region Properties
protected IRepository Repository { get; set; }
protected IUnitOfWorkFactory UnitOfWorkFactory { get; set; }
private readonly ILogger _logger;
private readonly IStringLocalizer _localizer;
#endregion
#region Ctor
public Service(IRepository repository, IUnitOfWorkFactory unitOfWorkFactory,
ILogger<Service<T>> logger, IStringLocalizer<Service<T>> localizer)
{
Repository = repository;
UnitOfWorkFactory = unitOfWorkFactory;
_logger = …Run Code Online (Sandbox Code Playgroud)