我有一个简单的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.Meta.1[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 …
我想知道你是否可以在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
如何从F#中的指定正态分布中获取随机值?
我想要类似于Python的x = numpy.random.normal(mean,standard_deviation),但是在F#中.
我正在使用Glimpse和MVC4,我想捕获Glimpse的时间线选项卡数据并将其存储在数据库或文件中以用于报告目的.
我一直在使用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设置更简洁吗?
假设你有一个模型Foo.一个业务案例是简单地创建一个Foo实例,因此我的模型中有一个相应的CreateFooCommand,通过调用给定REST端点的POST请求来触发.
当然还有其他命令.
但现在,有一个ViewModel,它来自我的DomainModel.它只是一个带有原始数据的sql表 - 来自DomainModel的每个Foo实例都有相应的派生ViewModel实例.两者都有不同的ID(在DomainModel上有一个DomainID,在ViewModel上它只是一个long值).
现在:在这种情况下我是否应该关心HATEOAS?在适当的REST实现中,我至少应该在标头中返回location-url.但由于我的视图模型仅来自DomainModel,我应该关心吗?在创建DomainModel时,我甚至没有视图模型的ID.
我正在使用kafka进行事件采购.我意识到我们仍然需要配置日志保留时间,即log.retention.hours.
如果我想无限期地保留所有消息,最好使用什么值?示例配置为log.retention.bytes-1,我也可以使用-1 log.retention.hours吗?
CQRS/ES架构中的有界上下文之间的通信是通过事件实现的; context A生成事件作为对命令的响应,然后通过事件总线(消息队列)将这些事件转发到上下文B.
或者......您可以将事件存储在eventstore中(属于上下文A).或者......两者(存储和转发).
我的问题是:从上下文B,我应该从上下文存储中提取事件吗?或者只是消费通过事件总线推送的事件?
我倾向于拉动方式.因为那时我们可以在上下文B中进行一些追赶.相反,在推送方法中,上下文B可能不知道在B遇到停机时传递的事件.
所以......这意味着......当我们有eventstore时,我们可以简单地忘记消息队列(似乎是多余的)?
或者我在这里遗漏了什么?
我想获取列表的最后一个元素,我的逻辑是反转列表并获得它的头部:
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)
谁能帮帮我吗?
我正在浏览kafka文档并遇到了
保证
在高层次上,Kafka 提供了以下保证:
生产者发送到特定主题分区的消息将按发送顺序附加。也就是说,如果记录 M1 与记录 M2 由同一生产者发送,并且 M1 先发送,则 M1 的偏移量将低于 M2,并在日志中出现更早。消费者实例按照记录在日志中的存储顺序查看记录。对于复制因子为 N 的主题,我们最多可以容忍 N-1 个服务器故障,而不会丢失提交到日志的任何记录。
我有几个问题。
M1将具有比 更低的偏移量M2?如果M1重试晚于M2?f# ×3
.net ×2
apache-kafka ×2
cqrs ×2
asp.net-mvc ×1
autofac ×1
autofixture ×1
c# ×1
events ×1
function ×1
glimpse ×1
hateoas ×1
list ×1
moq ×1
quotations ×1
rest ×1
reverse ×1
unit-testing ×1