小编quj*_*jck的帖子

在azure worker角色中使用QueueClient.OnMessage

我有一个Azure辅助角色,负责检查4个服务总线队列.目前,我只是循环方法来手动检查队列.

while(true)
{
    //loop through my queues to check for messages
}
Run Code Online (Sandbox Code Playgroud)

Azure SDK 2.0具有监听消息而不是轮询消息的能力.但是我见过的每个例子都使用Console.ReadKey()的控制台应用程序.有没有办法让工作者角色坐下来等待消息呢?

我试过了:

public override void Run()
{
    _queueProcessors.ForEach(x => x.OnMessage(Process);
}
Run Code Online (Sandbox Code Playgroud)

其中_queueProcessors是QueueClients的列表,而Process是处理消息的私有方法.但是,worker角色会注册它们然后重新启动.

所以任何人都知道如何让队列客户端坐下来等待消息?

c# azure azure-worker-roles azureservicebus azure-servicebus-queues

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

装饰者和IDisposable

我有一个子类 DbContext

public class MyContext : DbContext { }
Run Code Online (Sandbox Code Playgroud)

并且我对该实现有一个IUnitOfWork抽象MyContext,IDisposable以确保MyContext在适当的时间处理诸如的引用

public interface IUnitOfWork : IDisposable { }

public class UnitOfWork : IUnitOfWork 
{
    private readonly MyContext _context;

    public UnitOfWork()
    {
        _context = new MyContext();
    }

    ~UnitOfWork()
    {
        Dispose(false);
    }

    public void Dispose()
    {
        Dispose(true);
        GC.SuppressFinalize(this);
    }

    private bool _disposed;

    protected virtual void Dispose(bool disposing)
    {
        if (_disposed) return;

        if (disposing)
        {
            if (_context != null) _context.Dispose();
        }

        _disposed = true;
    }
} …
Run Code Online (Sandbox Code Playgroud)

c# decorator ioc-container simple-injector

17
推荐指数
2
解决办法
1594
查看次数

ASP.NET WebApi OData对DTO的支持

我有Project实体和ProjectDTO.我正在尝试创建一个WebAPI控制器方法,可以获取并返回ProjectDTO并使其支持OData.

问题是我正在使用可以使用Project实体而不是Project DTO查询数据库的ORM.有什么方法可以根据ProjectDTO从OData应用过滤/排序/分页到Project实体查询?

public ODataQueryResult<ProjectDTO> GetProjects(ODataQueryOptions<ProjectDTO> query)
{
    var context = new ORM_Context();

    var projects = context.Projects; // IQueryable<Project>
    var projectDtos = query.ApplyTo(projectDTOs)); // <-- I want to achieve something similar here
    var projectDTOs =
        projects.Select(
            x =>
            new ProjectDTO
                {
                    Id = x.Id,
                    Name = x.Name
                });

    var projectsQueriedList = projectDtos.ToList();

    var result = new ODataQueryResult<ProjectDTO>(projectsQueriedList, totalCount);

    return result;
}
Run Code Online (Sandbox Code Playgroud)

c# odata asp.net-web-api

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

使用WebApi和映射模型实现OData

我正在尝试在WebApi中实现OData.我正在使用存储库模式和EF5(在后端),这仍然与我找到的所有示例一致.这是事情变得不稳定的地方.我试图隐藏EF生成的类隐藏在控制器中使用AutoMapper映射的模型后面.我看到的例子似乎都归还了回购中的任何内容

我不想在控制器中但在存储库中应用OData参数(已映射的结果)以保留延迟执行的值.我可以将ODataCriteria传递到存储库中,但是当我尝试Appy时,我得到一个错误,因为看起来选项/结果是从表示层而不是IQueryable <EF_Class>键入IQueryable <Model>.

我在另一篇文章中看到其他人没有注意到这一点,但是,它只是帖子的一小部分,似乎没有帮助.

还有其他人处理过这件事吗?我真的不想暴露EF类.哦,我先使用DB.

提前致谢...

c# entity-framework odata asp.net-web-api

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

如何在多项目解决方案中使用SimpleInjector而不创建循环引用

我正在启动一个多项目解决方案,它将有多个入口点,例如Windows服务,ASP.NET网站,WebApi控制器等.我已经选择了SimpleInjector,因为它非常快,我不需要任何高级特征.

我的理解是SimpleInjector应该在启动时集中配置.从以下基本示例项目集开始

  • NS.Controllers
  • NS.Core.Data
  • NS.Core.Data.Model
  • NS.Web
  • NS.WindowsService(假设这不会一直运行)

有多个入口点,SimpleInjector的引导应该在哪里进行,可以/应该集中处理(在这种情况下,配置过程需要引用所有项目才能设置所有解决方案类)?

我是否应该有一个全局实例(例如NS.Global.Container),它不引用任何其他项目,并且每个入口点都负责在启动时添加自己的实例要求(优雅地处理重复注册,如NS.Core.Model)?

我是否应该使用ResolveUnregisteredType事件来处理请求的注册?

我只是缺乏一些小学生的知识吗?

更新:

Steven在下面的评论中提供的链接给出了这个问题的全面答案.

何处在多层应用程序中定位Ninject模块

如何在mvc站点的类项目部分初始化Ninject

c# dependency-injection inversion-of-control simple-injector

8
推荐指数
2
解决办法
1837
查看次数

Windows Workflow中的拦截/装饰活动

Windows Workflow Foundation是否提供了一种拦截或装饰活动的方法,例如记录?例如,为每个活动入口和出口点创建日志(理想情况下包括活动名称),而不修改所有现有项目代码.

例如,我有一个工作流程,其中包含一个打印"Hello world"的活动.在不修改XAML文件的情况下,我想捕获活动的进入和退出.我想在进入活动之前打印"输入Hello World活动",在活动打印出"Hello World"之后,我想打印"已完成的Hello World活动".

Windows Workflow是否提供了挂钩进入和退出活动的机制?


@ Richard210363已经在评论中添加了Windows Workflow Foundation支持此功能 - 请选择关闭此问题的用户是否可以考虑撤销他们的决定,因为问题显然有一个非常具体的答案使用相关框架?

.net c# aop workflow-foundation-4

7
推荐指数
2
解决办法
411
查看次数

使用Parallel.ForEach在多个线程上使用依赖项

我使用Simple Injector作为我的IoC容器.SimpleInjector使用这种简单的技术来处理Per Thread和Per Web Request的混合生活方式

container.RegisterPerWebRequest<IWebRepository, Repository>();
container.RegisterLifetimeScope<IThreadRepository, Repository>();
container.Register<IRepository>(container.GetInstance<Repository>());

// Register as hybrid PerWebRequest / PerLifetimeScope.
container.Register<Repository>(() =>
{
    Repository repository;
    if (HttpContext.Current != null)
        repository = (Repository)container.GetInstance<IWebRepository>();
    else
        repository = (Repository)container.GetInstance<IThreadRepository>();

    return repository;
});
Run Code Online (Sandbox Code Playgroud)

不幸的是(显然!),在我的UnitOfWork类的其他地方,当我使用Parallel.ForEach并尝试并行调用Repository类的多个实例时,这给了我一个问题,因为只有第一个线程在HttpContext中找到一个值.当前

using (TransactionScope scope = new TransactionScope())
{
    Parallel.ForEach(new List<IRepository>() { _repository1, _repository2 ... }, 
        (repository) =>
        {
            repository.Commit();
        });
    scope.Complete();
}
Run Code Online (Sandbox Code Playgroud)

既然我已经写完了这个问题,我可以看到我可能会要求不可能或者是愚蠢的东西......但到底是什么......这可以做到吗?单个请求/线程注册是否可用于多个内部线程?

c# multithreading dependency-injection task-parallel-library simple-injector

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

Linq to Entities group按周编号

我正在使用ASP.NET v4.5和linq实体我试图按周使用以下代码对数据进行分组

var groupedByWeek = salesOrdersList
    .GroupBy(i => i.DueDate.AddDays(-(int)i.DueDate.DayOfWeek));
Run Code Online (Sandbox Code Playgroud)

但是我得到一个"黄色死亡屏幕",错误:

LINQ to Entities无法识别方法'System.DateTime AddDays(Double)'方法,并且此方法无法转换为商店表达式.

理想情况下我想说

var groupedByWeek = salesOrdersList.GroupBy(i => i.DueDate.WeekNumber);
Run Code Online (Sandbox Code Playgroud)

但生活并不那么容易!

有没有人知道使用Linq to Entities的周数的方法?

c# linq asp.net linq-to-entities entity-framework

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

在配置为使用markdown时,Orchard中的语法突出显示代码段

我已经安装了Orchard 1.7.0,为博客帖子启用了markdown(大致在这里详细说明),但是我无法弄清楚如何为我的帖子添加C#(或任何语言)的语法高亮显示.

  • Orchard是否有能力为降价添加语法高亮?要么
  • stackoverflow如何添加语法突出显示?
  • 用于Orchard的Syntax Highlighter会产生预期的效果吗?

c# orchardcms markdownsharp

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

IoC Castle Windsor - 没有为此对象定义的无参数构造函数

当使用Castle Windsor通过(DI/IoC)模式相应地注册控制器及其依赖关系时,我在控制器上获得了"为此对象定义的无参数构造函数".有人可以看看下面的内容,看看我的错误,因为我看不到它.

在此输入图像描述

在global.asax上注册的代码

public class MyApplication : System.Web.HttpApplication
{ 
    public MvcApplication()
    {
        this.container = new WindsorContainer().Install(new DependencyInstaller());
    }
    protected void Application_Start()
    {
        AreaRegistration.RegisterAllAreas();

        WebApiConfig.Register(GlobalConfiguration.Configuration);
        FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
        RouteConfig.RegisterRoutes(RouteTable.Routes);
        BundleConfig.RegisterBundles(BundleTable.Bundles);
        GlobalConfiguration.Configuration.Services.Replace(typeof(IHttpControllerActivator),
        new WindsorActivator(this.container));
    }
}
Run Code Online (Sandbox Code Playgroud)

我的DI

public class DependencyInstaller : IWindsorInstaller
{
    public void Install(IWindsorContainer container, IConfigurationStore store)
    {
        container.Register(
            Component.For<IDatabaseFactory>().ImplementedBy<DatabaseFactory>().LifeStyle.PerWebRequest,
            Component.For<IUnitOfWork>().ImplementedBy<UnitOfWork>().LifeStyle.PerWebRequest,
            Component.For<IMappingEngine>().ImplementedBy<MappingEngine>().UsingFactoryMethod(() => Mapper.Engine).LifeStyle.Singleton,
            Component.For<IFirmTasks>().ImplementedBy<FirmTasks>().LifeStyle.PerWebRequest,
            Classes.FromAssemblyContaining<PersonController>().BasedOn<IController>().LifestyleTransient(),
            Classes.FromThisAssembly().BasedOn<IHttpController>().LifestyleTransient(),
            Classes.FromAssemblyNamed("Core.Firm.Tasks").Where(type => type.Name.EndsWith("Tasks")).WithServiceAllInterfaces().LifestylePerWebRequest(),
            Classes.FromAssemblyNamed("Core.Firm.Repository")
                .Where(type => type.Name.EndsWith("Repository")).WithServiceAllInterfaces().LifestylePerWebRequest()
            );
    }
}
Run Code Online (Sandbox Code Playgroud)

我的控制器

public class PersonController : Controller
{
    private IFirmTasks tasks;

    public PersonController(IFirmTasks tasks)
    {
        this.tasks …
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc castle-windsor ioc-container inversion-of-control

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