小编Phi*_*ler的帖子

使用Window的RelativeSource进行WPF绑定需要Path中的"DataContext"吗?

下面的代码有效,但我很好奇为什么我需要Path以"DataContext"作为前缀?在大多数其他情况下,使用的路径是相对于DataContext的.是因为我使用的是RelativeSource吗?因为源是根级别(Window)?

    <Style TargetType="TextBox">
        <Setter 
           Property="IsReadOnly"
           Value="{Binding RelativeSource={RelativeSource FindAncestor, 
           AncestorType={x:Type Window}}, Path=DataContext.IsReadOnly}"/>
    </Style>        
Run Code Online (Sandbox Code Playgroud)

data-binding wpf

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

将QueueBackgroundWorkItem与用户标识一起使用?

我正在使用HostingEnvironment.QueueBackgroundWorkItemASP.Net应用程序的后台运行工作,基于Scott Hanselman的博客文章如何在ASP.NET中运行后台任务.

我想将后台任务作为当前用户的身份运行.我已尝试在操作中传递WindowsPrincipal并设置Thread.CurrentPrincipal,但这不会导致Action作为当前用户执行.

这是可能的,还是使用HostingEnvironment总是暗示作为应用程序池标识运行?

编辑

不完全是我的原始问题,但我也试图通过CallContext.LogicalSetData()和CallContext.LogicalGetData()传递一个值.在Get侧,值始终为null.

编辑#2

也在排队方面尝试了这个:

using (HostingEnvironment.Impersonate(windowsIdentity.Token))
{
     HostingEnvironment.QueueBackgroundWorkItem(work);
}
Run Code Online (Sandbox Code Playgroud)

当工作实际完成时,Action中的当前WindowsIdentity仍然是应用程序池标识.

c# asp.net impersonation

8
推荐指数
1
解决办法
1059
查看次数

检测/诊断线程饥饿

我正在对IIS应用程序进行一些性能/可伸缩性测试,这些测试偶尔似乎会减慢到生产中的爬行速度.我能够使用NUnit一致地重现慢度.

在测试期间或生产中发生缓慢时,CPU和内存不会出现峰值.我强烈怀疑应用程序正在遭受线程饥饿,因为它似乎不是导致瓶颈的CPU,内存,I/O或数据库访问.我确实看到了看似线索饥饿的迹象; 例如,NLog的异步日志文件写入往往具有长时间的静默,随后是具有较旧时间戳的活动突发(即,较低优先级的线程正在等待线程释放以便写入).

我可以采取哪些步骤来明确确定应用程序确实是线程缺乏的,并且(假设是这种情况)确定导致问题的系统的确切区域?

编辑

我忽略了几乎所有的代码都是同步的(它是遗留系统).

.net c# iis threadpool starvation

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

CouchDB 的 C# 库?

我已经一年多没有看到这个问题的提问/回答了,而且我确信那段时间发生了很多变化。

如果您在 .Net/C# 环境(生产中)中使用 CouchDB,我想知道您使用的是哪个库,以及您使用它的经验。

我发现至少有四个库:Hammock、Relax、Divan 和 SharpCouch。然而,当我用谷歌搜索他们的名字+“CouchDB”时,我发现教程、博客文章、推荐书、文档等内容很少。似乎它们都没有二进制版本(都“拉源并构建”)。

这些库仍然很新/不成熟吗?它们是否如此简单以至于不需要文档?使用 CouchDB 的 .Net 开发人员如此之少以至于没有人在该领域谈论它吗?

感谢您的任何见解。

.net c# couchdb

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

部署时Log4Net不记录

使用版本1.2.11.日志记录在我的开发机器上运行,但在部署时不会创建目录或日志.

我试过了:

  • 提供对IUSR,Everyone,本地用户的完整目录访问权限.
  • 将应用程序池作为本地管理员帐户运行.
  • Phil Haack所述,使用内部调试.

每次更改后停止并启动应用程序池.

输出文件中没有生成任何内容.

我的log4Net配置如下.关于下一步该尝试的任何想法?

<?xml version="1.0"?>
<log4net debug="true">
  <appender name="file" type="log4net.Appender.RollingFileAppender">
    <file value="..\Logging\log.txt" />
    <appendToFile value="true" />
    <rollingStyle value="Composite" />
    <datePattern value="yyyyMMdd" />
    <maxSizeRollBackups value="10" />
    <maximumFileSize value="1MB" />
    <threshold value="DEBUG" />
    <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
    </layout>
  </appender>
  <appender name="console" type="log4net.Appender.DebugAppender">
    <layout type="log4net.Layout.PatternLayout">
      <param name="ConversionPattern" value="%d [%t] %-5p %c [%x] &lt;%X{auth}&gt; - %m%n" />
    </layout>
  </appender>
  <root>
    <level value="ALL" />
    <appender-ref ref="file" />
    <appender-ref …
Run Code Online (Sandbox Code Playgroud)

.net c# log4net

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

结构图范围/生命周期指导?

有没有理由从默认范围(瞬态?)切换到其他东西,除了需要为功能原因控制范围(例如Singleton)?

如果我坚持使用默认范围,每个插件类型的每个默认实例都将在每个请求(假设是一个Web应用程序)上实际实例化,这是正确的吗?这会明显影响性能吗?

我已经考虑过使用Http Session范围来限制每个登录用户的一个实例.但是,这将导致(至少)每个插件类型的一个实例始终存储在内存中.使用默认范围,这些实例仅在处理页面请求时保留在内存中.我不确定哪个更好.

如果您使用StructureMap,您通常如何为每个插件类型配置范围?

感谢您的任何见解,

菲尔

c# structuremap inversion-of-control

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

运行后构建事件(F5)在Visual Studio中?

我在Visual Studio 2010中设置了一个后期构建事件.我遇到的问题是当我使用Run(F5)开始调试时事件不会运行 - 如果我显式构建(F6)它似乎只运行).

即使源文件已更改(因此必须构建以便运行),这似乎也会发生.

是否有控制此行为的设置?

visual-studio-2010 visual-studio

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

实体框架虚拟属性

为Entity Framework(v4)实体标记虚拟导航属性的影响是什么?

如果我不使用延迟加载,但忽略了正确的加载,访问(未加载)属性会发生什么?

是否会在延迟加载之外产生任何其他影响,或者是需要虚拟导航属性的主要功能?

c# entity-framework entity-framework-4

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

自动注册通用接口的所有实现

我目前的注册码:

Assembly web = Assembly.Load("MyAssembly");
types.AddRange(web.GetTypes());
//etc.

foreach (var theInterface in types.Where(t => t.IsInterface))
{
    var assignableType = types.Where(t => theInterface.IsAssignableFrom(t) && t != theInterface);
    foreach (var type in assignableType)
    {
        container.RegisterType(theInterface, type);
    }
}
Run Code Online (Sandbox Code Playgroud)

我的通用接口及其实现:

public interface IDomainEventHandler<in T>
{
    void Handle(T message);
}

public class DomainEventHandler1 : IDomainEventHandler<PhilTest1>
{
    public void Handle(PhilTest1 message)
    {
        throw new System.NotImplementedException();
    }
}

public class DomainEventHandler2 : IDomainEventHandler<PhilTest2>
{
    public void Handle(PhilTest2 message)
    {
        throw new System.NotImplementedException();
    }
}

public class DomainEventHandler3 …
Run Code Online (Sandbox Code Playgroud)

c# dependency-injection unity-container

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

Json.Net反序列化构造函数与属性规则

我正在使用Json.Net解决以下类的(反)序列化问题:

public class CoinsWithdrawn
{
    public DateTimeOffset WithdrawlDate { get; private set; }
    public Dictionary<CoinType, int> NumberOfCoinsByType { get; private set; }

    public CoinsWithdrawn(DateTimeOffset withdrawDate, Dictionary<CoinType, int> numberOfCoinsByType)
    {
        WithdrawlDate = withdrawDate;
        NumberOfCoinsByType = numberOfCoinsByType;
    }
}
Run Code Online (Sandbox Code Playgroud)

问题是构造函数参数"withdrawDate"的名称与属性名称"WithDrawlDate"不同.使名称匹配(甚至忽略大小写)修复了问题.

但是,我想要更好地理解这一点,所以我恢复了代码并在将两个setter公之后进行了测试.这也解决了这个问题.

最后,我从自动属性切换到具有支持字段的属性,以便我可以完全调试并查看实际发生的情况:

public class CoinsWithdrawn
{
    private DateTimeOffset _withdrawlDate;
    private Dictionary<CoinType, int> _numberOfCoinsByType;

    public DateTimeOffset WithdrawlDate
    {
        get { return _withdrawlDate; }
        set { _withdrawlDate = value; }
    }

    public Dictionary<CoinType, int> NumberOfCoinsByType
    {
        get { return _numberOfCoinsByType; }
        set { _numberOfCoinsByType …
Run Code Online (Sandbox Code Playgroud)

c# serialization json json.net

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