相关疑难解决方法(0)

每个网络请求一个DbContext ...为什么?

我一直在阅读很多文章,解释如何设置实体框架,DbContext以便每个HTTP Web请求只使用各种DI框架创建和使用一个.

为什么这首先是一个好主意?使用这种方法有什么好处?在某些情况下这是个好主意吗?在使用DbContext存储库方法调用实例化s 时,您是否可以使用此技术执行某些操作?

c# asp.net entity-framework dependency-injection dbcontext

382
推荐指数
6
解决办法
9万
查看次数

Dispose()和Ninject指南

所以,我有一个从WCF服务公开的方法:

public GetAllCommentsResponse GetAllComments(GetAllCommentsRequest request)
{
    var response = new GetAllCommentsResponse();

    using(_unitOfWork)
        try
        {
            Guard.ArgNotNull(request, "request");

            var results = _unitOfWork.CommentRepository.Get(d => d.Id > 0).ToArray();

            //... Do rest of stuff here
        }
        catch (Exception ex)
        {
            response.Success = false;
            response.FailureInformation = ex.Message;
            Logger.LogError("GetAllComments Method Failed", ex);
        }

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

我有一个全局DataUnitOfWork对象(实现IDisposable),当服务调用进来时,Ninject通过构造函数参数实例化.当调试时,如果我使用

using(_unitOfWork)
Run Code Online (Sandbox Code Playgroud)

超出范围后,_unitOfWork对象立即被释放,然后被Ninject再次调用(尽管它被标记为已丢弃,因此没有任何反应.)如果没有using语句,Ninject将处理处理.

长话短说,这是否有一般的经验法则?在我阅读的所有内容似乎表明永远不会使用它,或者在某些折衷的情况下使用它之后,我一直害怕整个IDisposable的东西,但它总是让我感到困惑.

任何输入都表示赞赏.

哦,当我在这里打字时,为什么在处理时确实有GC.SuppressFinalize()的调用?Dispose和Finalize有何不同?

.net c# garbage-collection idisposable ninject

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

什么是ASP.NET MVC中基本控制器类的优秀候选者?

我见过很多人谈论在他们的ASP.NET MVC项目中使用基本控制器.我见过的典型例子就是记录或者CRUD脚手架.基本控制器类有哪些其他好的用途?

asp.net-mvc controller base-class

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

属性中的依赖注入

我试图将依赖注入到自定义中AuthorizeAttribute,如下所示:

public class UserCanAccessArea : AuthorizeAttribute
{
    readonly IPermissionService permissionService;

    public UserCanAccessArea() :
        this(DependencyResolver.Current.GetService<IPermissionService>()) { }

    public UserCanAccessArea(IPermissionService permissionService)
    {
        this.permissionService = permissionService;
    }

    protected override bool AuthorizeCore(HttpContextBase httpContext)
    {
        string AreaID =
            httpContext.Request.RequestContext.RouteData.Values["AreaID"] as string;

        bool isAuthorized = false;

        if (base.AuthorizeCore(httpContext))
            isAuthorized = permissionService.UserCanAccessArea(AreaID, httpContext.User);

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

这有效,但似乎是作为一个单身人士解决,这意味着我得到了我以前的问题中描述的问题

我想要做的是使用属性注入但由于我的属性本身没有被Unity解决,我无法找到一种方法来配置容器来拦截和解析属性.我尝试过以下方法:

public class UserCanAccessArea : AuthorizeAttribute
{
    public IPermissionService permissionService { get; set; }

    protected override bool AuthorizeCore(HttpContextBase httpContext)
    {
        string AreaID =
            httpContext.Request.RequestContext.RouteData.Values["AreaID"] …
Run Code Online (Sandbox Code Playgroud)

c# authentication asp.net-mvc dependency-injection unity-container

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

Unity使用参数将依赖项注入MVC​​过滤器类

我正在使用Unity.MVC4依赖注入来访问我的服务.注入到我的Controller构造函数中时,一切都正常,但我现在要做的是在我的过滤器类中使用属性注入,这样我就可以从内部访问我的数据库了.

在我开始这个问题之前,我用Google搜索并尝试了不同的示例,但我找不到适合我的解决方案..

Bootstrapper.cs

public static class Bootstrapper
{
    public static IUnityContainer Initialise()
    {
        var container = BuildUnityContainer();

        DependencyResolver.SetResolver(new UnityDependencyResolver(container));

        return container;
    }

    private static IUnityContainer BuildUnityContainer()
    {
        var container = new UnityContainer();
        container.RegisterType<IAccountRepository, AccountRepository>();
        container.RegisterType<IAdministrationRepository, AdministrationRepository>();
        container.RegisterType<IUploadDirectlyRepository, UploadDirectlyRepository>();
        container.RegisterType<IUserRepository, UserRepository>();
        container.RegisterType<INewsRepository, NewsRepository>();
        container.RegisterType<IContactRepository, ContactRepository>();

        // register all your components with the container here
        // it is NOT necessary to register your controllers

        // e.g. container.RegisterType<ITestService, TestService>();    
        RegisterTypes(container);

        return container;
    }

    public static void RegisterTypes(IUnityContainer container)
    { …
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc dependency-injection unity-container action-filter asp.net-mvc-4

9
推荐指数
3
解决办法
8374
查看次数

基本控制器中的Asp.Net MVC Outputcache无法正常工作

我在asp.net mvc基本控制器中使用输出缓存属性,但每次都在OnActionExecuting中调用它.是否有任何选项只能一次调用该方法来加载所有默认值?

protected override void OnActionExecuting(ActionExecutingContext filterContext)
{
    GetDefaults();
    base.OnActionExecuting(filterContext);
}

[OutputCache(Duration = 60000)]
private ActionResult GetDefaults()
{
    //code to load all my default values
    // Viewdata values used in all pages in my aplication
    // Viewdata values used in all pages in my aplication
    // Viewdata values used in all pages in my aplication
    return null;
}
Run Code Online (Sandbox Code Playgroud)

是否还有其他最佳实践来加载所有页面的所有默认值并缓存它们?

c# asp.net asp.net-mvc asp.net-mvc-4

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

AuthorizeAttribute对象的生命周期是什么?是每个请求或瞬态网络?

我只想知道AuthorizeAttribute的生命周期,并开始调试AuthorizeAttribute的默认构造函数,但无法获得任何命中.

这是自定义授权过滤器的代码.

 public class CustomAuthorizeAttribute :  AuthorizeAttribute
 {
    public CustomAuthorizeAttribute() : base()
    {
        string test = string.Empty;
    }
    public override void OnAuthorization(HttpActionContext actionContext)
    {
        //Some code
    }
}
Run Code Online (Sandbox Code Playgroud)

有人请帮我理解这个AuthorizeAttribute的生命周期吗?

谢谢

iis asp.net-mvc request authorize-attribute web-performance

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

如何使用构造函数参数测试Action Filter的存在?

我试图测试我的基本控制器是否装饰了某个动作过滤器.因为这个过滤器的构造函数看起来web.config,我第一次尝试测试失败,因为测试项目没有有效的配置文件.继续,我使用了一个TestConfigProvider我注入到过滤器构造函数中,但是下面的测试失败了,因为配置提供程序没有传递给构造函数.如果应用此过滤器,我还能怎么测试?

[TestMethod]
public void Base_controller_must_have_MaxLengthFilter_attribute()
{
    var att = typeof(BaseController).GetCustomAttribute<MaxLengthFilter>();
    Assert.IsNotNull(att);
}
Run Code Online (Sandbox Code Playgroud)

.net c# asp.net-mvc

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

构造函数依赖注入WebApi属性

我一直在寻找WebApi属性的非参数注入选项.

我的问题是使用Structuremap是否真的可以实现这一点?

我一直在谷歌搜索,但继续提出属性注入(我不喜欢使用)或假设的构造函数注入的实现,我到目前为止无法复制.

我选择的容器是Structuremap,但是任何这样的例子就足够了,因为我能够转换它.

有人管过这个吗?

structuremap dependency-injection custom-attributes asp.net-web-api structuremap3

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