小编Mic*_*out的帖子

如何使用Autofac确保每个请求有一个NHibernate ISession?

我在Application_Start方法中使用的Autofac模块中有以下代码:

builder.Register(c => new Configuration().Configure().BuildSessionFactory())
    .SingletonScoped();
builder.Register(c => c.Resolve<ISessionFactory>().OpenSession())
    .HttpRequestScoped();

builder.Register<NHibernateSomethingRepository>().As<ISomethingRepository>();
Run Code Online (Sandbox Code Playgroud)

存储库的构造函数将ISession作为参数.但是我最终为整个应用程序提供了一个会话,即使我明确要求它是HttpRequestScoped.

我已经配置了ContainerDisposal HTTP模块.

根据文档,您必须创建一个嵌套容器,但我让Autofac自动装配依赖项.

我该怎么办?

谢谢!

nhibernate asp.net-mvc dependency-injection autofac

3
推荐指数
1
解决办法
1397
查看次数

为什么没有.NET Community Process?

我正在研究软件工程的一般主题,我遇到了Java Community Process网站:

JCP是为Java技术开发标准技术规范的机制.任何人都可以注册该站点并参与审阅和提供Java规范请求(JSR)的反馈,任何人都可以注册成为JCP成员,然后参与JSR的专家组,甚至提交他们自己的JSR提案.

对我来说似乎是一个好主意,并且在JCP网站上有很多非常好的书面规范和参考实现.

那么为什么没有.NET Community Process呢?这是微软可以或应该开始的吗?也许他们可以在Codeplex.net上安装它并将密钥交给社区.

.net specifications process

3
推荐指数
1
解决办法
208
查看次数

如何在LINQ查询中使用.Select(T,index)重载?

我想做这个:

list.Select((x, i) => new { Item = x, Index = i })
Run Code Online (Sandbox Code Playgroud)

但是在LINQ查询语法中,类似于:

from x  in list
select(x, i) { Item = x, Index = i }
Run Code Online (Sandbox Code Playgroud)

但这不起作用.或者也许还有另一种方法可以在LINQ查询中增加en范围变量?

c# linq

3
推荐指数
1
解决办法
1398
查看次数

Console.Write语法:格式字符串"{0,-25}"是什么意思

我在写C#代码

Console.Write("{0,-25}", company);
Run Code Online (Sandbox Code Playgroud)

在上面的代码中这"{0,-25}"是什么意思?

c#

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

如何使用VS调试服务器实现基本的HTTP身份验证?

我正在为ActiveX HTTP控件制作测试装备,我需要创建一个安全POST的网站.为了简单起见,我正在使用VS调试服务器运行Web应用程序; Web应用程序项目是测试应用程序解决方案的一部分.AX控件不支持NTLM身份验证.有没有简单的方法可以在没有NTLM或重定向到页面表单的情况下要求非常基本的http身份验证?我只需要在帖子中要求用户名和密码.用户名和密码内容无关紧要,因此所有内容都将以明文形式存储.

我在Web.Config中尝试过身份验证模式; Windows看起来与NTLM相同(可能是错误的),Forms需要一个表单来连接并设置一个cookie,Passport超出了这个项目的范围,我不知道我是如何实现None的.有任何想法吗?

我在Web.Config中尝试了"authentication mode ="Windows"",并在Web应用程序的"Web"选项卡中选中了NTLM复选框.

c# asp.net authentication basic-authentication visual-studio

3
推荐指数
1
解决办法
5832
查看次数

为什么找不到 Azure 应用程序配置功能标志?

Azure Functions 应用程序,运行时 v3。

该应用程序有一个FunctionsStartup类,它首先在其方法中启用 Azure 应用程序配置ConfigureAppConfiguration

builder.ConfigurationBuilder.AddAzureAppConfiguration(options =>
{
    options
        .Connect(appConfigurationConnectionString)
        .UseFeatureFlags();
});
Run Code Online (Sandbox Code Playgroud)

在其Configure方法中,它启用功能管理,并添加 Azure 应用程序配置服务(以便我们可以在运行时刷新设置):

builder.Services
    .AddAzureAppConfiguration()
    .AddFeatureManagement()
    .AddFeatureFilter<ContextualTargetingFilter>();
Run Code Online (Sandbox Code Playgroud)

在 Azure 门户上有一个已启用的功能标志,称为CardExpirationNotice。该代码用于IFeatureManagerSnapshot检查该功能是否启用:

feature = nameof(Features.CardExpirationNotice);
var isEnabled = await _featureManagerSnapshot.IsEnabledAsync(feature);
Run Code Online (Sandbox Code Playgroud)

isEnabledfalse,并且输出此日志消息:

找不到功能“CardExpirationNotice”的功能声明。

我尝试在 local.settings.json 中本地配置一个标志:

"FeatureManagement__CardExpirationNotice": true
Run Code Online (Sandbox Code Playgroud)

然后isEnabledtrue,因此我可以将问题缩小到 Azure 应用程序配置,并排除功能管理实现。

azure-app-configuration feature-flags

3
推荐指数
1
解决办法
2061
查看次数

为什么RedirectToRoute("Default")不会重定向到根目录?

鉴于这些路线:

routes.MapRoute("Test", "test", new { controller = "Test", action = "Index" });
routes.MapRoute("Default", "{controller}/{action}/{id}", 
  new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
Run Code Online (Sandbox Code Playgroud)

如果我从TestController的Index操作调用RedirectToRoute("Default")它重定向到/test但我希望它重定向到/

我在调试会话期间返回之前检查了调用RedirectToRoute("Default")的结果.

RedirectToRouteResult result = RedirectToRoute("Default");

它有一个属性RouteName,其值为"Default",属性RouteValues没有元素(Count = 0).我使用Reflector检查,并在内部传递null作为RouteValueDictionary.

同样,我希望给定我的应用程序中定义的路由的默认值,它将重定向到HomeController上的Index视图.

为什么不重定向/

c# asp.net-mvc asp.net-mvc-routing

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

如何将会话值设置为空字符串?

会话启动时如何在Global.asax页面事件中将Session值设置为空("")字符串?可以请任何帮助我.

c# asp.net session-variables global-asax

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

XUnit测试DbContext没有处理

我正在为DbContext实现一个XUnit测试,似乎DbContext没有正确处理.当我调试第一个测试时,它可以工作,但在第二个测试中,listAds抛出了已经添加的错误.

添加监视后,在第二个测试中,_context为null,但它具有Advertisementsbefore之前的值_context.Advertisements.AddRange(listAds);.

public class AdsServiceTest: IDisposable
{
    private readonly DbContextOptions<SensingSiteDbContext> _options;
    private readonly SensingSiteDbContext _context;
    private readonly AdsService _AdsService;

    public AdsServiceTest()
    {
        //initialize db options
        _options = new DbContextOptionsBuilder<SensingSiteDbContext>()
            .UseInMemoryDatabase()
            .Options;

        //get service
        _context = new SensingSiteDbContext(_options);

        //initialize dbcontext
        List<Ads> listAds = new List<Ads>() {
            new Ads(){  Id=1,AdsName="Ads1", Deleted=false},
            new Ads(){  Id=2,AdsName="Ads2", Deleted=false},
            new Ads(){  Id=3,AdsName="Ads3", Deleted=false}
        };

        //In the second test method, it throw errors, listAds already exist in 
        _context.Advertisements.AddRange(listAds);
        _context.SaveChanges(); …
Run Code Online (Sandbox Code Playgroud)

c# xunit entity-framework-core

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

在appveyor .NET Standard 2.0上构建

我将我的项目(https://github.com/MarkKhromov/The-Log)迁移到.NET Standard 2.0并且我的appveyor构建已损坏.我怎么解决这个问题?

我的方案包含:

  • .NET标准项目
  • 控制台应用项目
  • 类库(测试)项目

我已经尝试过写道:

dotnet: 2.0.0
script:
  - dotnet restore
  - dotnet build
Run Code Online (Sandbox Code Playgroud)

要么

- dotnet build TheLog/TheLog.csproj -c Release -f netstandard2.0
- msbuild TheLog.Demos/TheLog.Demos.csproj /p:Configuration=Release
- msbuild TheLog.Tests/TheLog.Tests.csproj /p:Configuration=Debug
- nunit-console TheLog.Tests/TheLog.Tests.csproj
Run Code Online (Sandbox Code Playgroud)

但每次我都有错误

appveyor .net-standard .net-standard-2.0

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