小编Rub*_*ink的帖子

Autofac MVC 5 RegisterWebApiFilterProvider导致无法解析的IOverrideFilter

我有一个简单的MVC应用程序,我正在尝试添加一个异常过滤器.为此,我遵循Autofac WebAPI Integration文档,我相信它适用于Autofac.WebApi2 NuGet包.

首先,我创建了异常过滤器:

public class ErrorLoggingExceptionFilter : IAutofacExceptionFilter
{
    public void OnException(HttpActionExecutedContext context)
    {
        // do something 
    }
}
Run Code Online (Sandbox Code Playgroud)

然后我将AutofacControllerConfiguration属性添加到我想要应用异常过滤器的API控制器基类:

[AutofacControllerConfiguration]
public class ApiControllerBase : ApiController  {}
Run Code Online (Sandbox Code Playgroud)

然后我用Autofac 注册了异常过滤器:

builder.RegisterType<ErrorLoggingExceptionFilter>()
    .AsWebApiExceptionFilterFor<ApiControllerBase>()
    .InstancePerApiRequest();
Run Code Online (Sandbox Code Playgroud)

此时应用程序仍然正常运行,但异常过滤器没有运行,因此我注册了autofac的过滤器提供程序:

builder.RegisterWebApiFilterProvider(GlobalConfiguration.Configuration);
Run Code Online (Sandbox Code Playgroud)

一旦添加,我开始得到500's,出现以下错误:

None of the constructors found with 'Autofac.Core.Activators.Reflection.DefaultConstructorFinder' on type 'Autofac.Features.Metadata.Meta1[System.Web.Http.Filters.IOverrideFilter]' can be invoked with the available services and parameters: Cannot resolve parameter 'System.Web.Http.Filters.IOverrideFilter value' of constructor 'Void .ctor(System.Web.Http.Filters.IOverrideFilter, System.Collections.Generic.IDictionary2[System.String,System.Object])'.

我没有在这个项目中使用任何元数据,也不知道任何事情IOverrideFilter …

asp.net-mvc autofac asp.net-web-api

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

如何在F#中实现null-safe运算符

我想知道你是否可以在F#中添加类似"null-safe"-operator的东西.我知道可能有计划在C#中为这样一个运营商提供下一个更大的版本.

如果没有办法实现这样的行为,是否有办法包装一个可能会抛出一个NullReferenceException捕获异常并返回的块的语句null.

我想到了类似的东西:

let sth = %% <@ someobject.method().another().andAnother() @>
Run Code Online (Sandbox Code Playgroud)

其中%%是执行表达式并检查异常的自定义运算符.

我做的一个尝试是:

open Microsoft.FSharp.Quotations
open Microsoft.FSharp.Linq.QuotationEvaluation

let (~%%) (right:Expr) =
  try 
    right.CompileUntyped()
    right()
  with
  | ex -> null
Run Code Online (Sandbox Code Playgroud)

但这不符合我的要求(事实上它甚至没有编译:)

我通读了:

有没有人有想法如何优雅地为链式方法创建这样的单行try-catch?

f# exception-handling operator-overloading quotations nullreferenceexception

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

从F#中的正态分布中绘制值

如何从F#中的指定正态分布中获取随机值?

我想要类似于Python的x = numpy.random.normal(mean,standard_deviation),但是在F#中.

f# normal-distribution

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

如何从Glimpse获取时间轴数据进行报告?

我正在使用Glimpse和MVC4,我想捕获Glimpse的时间线选项卡数据并将其存储在数据库或文件中以用于报告目的.

glimpse asp.net-mvc-4

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

AutoFixture和流利的Moq语法

我一直在使用Moq一段时间,为了简洁起见,我经常使用流畅的语法表达设置Mock.Of...

var foo = Mock.Of<IFoo>(f => f.Method(It.IsAny<string>()) == 7 && f.Property == "Hi");
var sut = new Whatever(foo);
Run Code Online (Sandbox Code Playgroud)

最近,我开始使用AutoFixture,似乎无法找到同时表达多个设置的任何等效语法.我明白我可以用Freeze... 表达同样的事情

var foo = fixture.Freeze<Mock<IFoo>>();
foo.Setup(f => f.Method(It.IsAny<string>()).Returns(7);
foo.Setup(f => f.Property).Returns("Hi");
var sut = fixture.Create<Whatever>();
Run Code Online (Sandbox Code Playgroud)

......但如果可能的话,我希望获得自动锁定的好处,并保持流畅的Moq设置的简洁性.除了文体论点,AutoFixture是否公开了任何方式让我能够流利地表达这些设置?如果没有,我可以使用任何优化来使AutoFixture设置更简洁吗?

.net c# unit-testing moq autofixture

4
推荐指数
2
解决办法
1376
查看次数

CQRS和REST HATEOAS不匹配

假设你有一个模型Foo.一个业务案例是简单地创建一个Foo实例,因此我的模型中有一个相应的CreateFooCommand,通过调用给定REST端点的POST请求来触发.

当然还有其他命令.

但现在,有一个ViewModel,它来自我的DomainModel.它只是一个带有原始数据的sql表 - 来自DomainModel的每个Foo实例都有相应的派生ViewModel实例.两者都有不同的ID(在DomainModel上有一个DomainID,在ViewModel上它只是一个long值).

现在:在这种情况下我是否应该关心HATEOAS?在适当的REST实现中,我至少应该在标头中返回location-url.但由于我的视图模型仅来自DomainModel,我应该关心吗?在创建DomainModel时,我甚至没有视图模型的ID.

rest domain-driven-design hateoas cqrs

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

卡夫卡上的无限期日志保留

我正在使用kafka进行事件采购.我意识到我们仍然需要配置日志保留时间,即log.retention.hours.

如果我想无限期地保留所有消息,最好使用什么值?示例配置为log.retention.bytes-1,我也可以使用-1 log.retention.hours吗?

events event-sourcing apache-kafka

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

CQRS /上下文/ eventstore/push或pull之间的通信?

CQRS/ES架构中的有界上下文之间的通信是通过事件实现的; context A生成事件作为对命令的响应,然后通过事件总线(消息队列)将这些事件转发到上下文B.

或者......您可以将事件存储在eventstore中(属于上下文A).或者......两者(存储转发).

我的问题是:从上下文B,我应该从上下文存储中提取事件吗?或者只是消费通过事件总线推送的事件?

我倾向于拉动方式.因为那时我们可以在上下文B中进行一些追赶.相反,在推送方法中,上下文B可能不知道在B遇到停机时传递的事件.

所以......这意味着......当我们有eventstore时,我们可以简单地忘记消息队列(似乎是多余的)?

或者我在这里遗漏了什么?

message-queue cqrs event-sourcing

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

获取f#中列表的最后一个元素

我想获取列表的最后一个元素,我的逻辑是反转列表并获得它的头部:

module Program1 = 

    let last list =
        let newList=List.rev list;
        List.head newList;
        newList 

    let mainP1()=
        let list= [ 1; 2; 3] 
        printfn "Ultimul element al listei %A este %A" list (last list )
Run Code Online (Sandbox Code Playgroud)

但它给了我这个错误

Error       Type mismatch. Expecting a
    unit list    
but given a
    int list    
The type 'unit' does not match the type 'int'   
Run Code Online (Sandbox Code Playgroud)

谁能帮帮我吗?

.net f# reverse function list

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

卡夫卡排序保证

我正在浏览kafka文档并遇到了

保证

在高层次上,Kafka 提供了以下保证:

生产者发送到特定主题分区的消息将按发送顺序附加。也就是说,如果记录 M1 与记录 M2 由同一生产者发送,并且 M1 先发送,则 M1 的偏移量将低于 M2,并在日志中出现更早。消费者实例按照记录在日志中的存储顺序查看记录。对于复制因子为 N 的主题,我们最多可以容忍 N-1 个服务器故障,而不会丢失提交到日志的任何记录。

我有几个问题。

  1. 是否总是保证M1将具有比 更低的偏移量M2?如果M1重试晚于M2?
  2. 我也从各种文档中了解到,订购是不保证的,消费者必须自己处理。

apache-kafka kafka-producer-api

4
推荐指数
2
解决办法
3415
查看次数