小编Pet*_*ter的帖子

模拟框架与MS Fakes框架

对NMock与VS 2011 Fakes Framework等Mock框架的差异感到有些困惑.通过MSDN,我理解的是Fakes允许你像RhinoMock或NMock一样模拟你的依赖,但是方法不同,Fakes生成代码来实现这个功能,但Mocks框架没有.那么我的理解是正确的吗?假货只是另一个模拟框架

unit-testing microsoft-fakes

92
推荐指数
4
解决办法
6万
查看次数

Log4net:SysLog Appender示例

我正在寻找有关如何将Log4net日志记录到Syslog服务器的示例配置.欢迎任何帮助.

log4net syslog

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

为什么LINQ在这个例子中更快

我写了以下内容来测试使用foreachvs 的性能LINQ:

private class Widget
{
    public string Name { get; set; }
}

static void Main(string[] args)
{
    List<Widget> widgets = new List<Widget>();
    int found = 0;

    for (int i = 0; i <= 500000 - 1; i++)
        widgets.Add(new Widget() { Name = Guid.NewGuid().ToString() });

    DateTime starttime = DateTime.Now;

    foreach (Widget w in widgets)
    {
        if (w.Name.StartsWith("4"))
            found += 1;
    }

    Console.WriteLine(found + " - " + DateTime.Now.Subtract(starttime).Milliseconds + " ms");

    starttime = DateTime.Now;
    found …
Run Code Online (Sandbox Code Playgroud)

c# linq performance foreach

15
推荐指数
1
解决办法
724
查看次数

log4net过滤器 - 如何编写和过滤以忽略日志消息

我正在努力在log4net中编写一个AND条件过滤器.如果它是nLog,我可以这样写:

<logger name="*" minlevel="Info" xsi:type="NLogLoggerRule" writeTo="FooLogger" >
  <filters>
    <when condition="equals('${event-context:item=UserID}', 'TESTUSER') 
                 and equals('${event-context:item=URL}','/foo/foobar.aspx')" 
          action="Ignore" />
  </filters>
</logger>
Run Code Online (Sandbox Code Playgroud)

我不知道如何在log4net中编写相同的过滤器.在写一个条件时,我迄今为止取得了成功:

<appender>
   ....
   <filter type="log4net.Filter.PropertyFilter">
      <key value="URL" />
      <stringToMatch value="/foo/foobar.aspx" />
      <acceptOnMatch value="false" />
   </filter>
</appender>
Run Code Online (Sandbox Code Playgroud)

如何使用log4net过滤器编写AND条件?请帮忙.

log4net log4net-configuration log4net-filter

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

如何在Azure函数的AppSettings.json中添加配置值。有什么结构吗?

向其添加密钥的标准结构是什么appsettings.json?另外,如何读取我们的那些值run.csx?通常在app.config中,我们ConfigurationManager.GetSettings["SettingName"]; 在Azure Function中是否有任何类似的实现?

appsettings azure azure-functions

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

WCF:是否有一个属性要在OperationContract中生成参数?

[DataMember(IsRequired=true)]用来制作所需的DataContract属性.对于OperationContract参数似乎没有一些IsRequired.如何使它们成为必需而不允许null?

在SoapUI工具中,OperationContract中的参数似乎是可选的.虽然这绝不是可选的或null.

WCF接口:

[OperationContract]
IsClientUpdateRequiredResult IsClientUpdateRequired(IsClientUpdateRequiredInput versie);

...

[DataContract]
public class IsClientUpdateRequiredInput
{
    [DataMember(IsRequired=true)]
    public string clientName { get; set; }
    [DataMember(IsRequired = true, Order = 0)]
    public int major { get; set; }
    [DataMember(IsRequired = true, Order = 1)]
    public int minor { get; set; }
    [DataMember(IsRequired = true, Order = 2)]
    public int build { get; set; }
    [DataMember(IsRequired = true, Order = 3)]
    public int revision { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

soapUI请求模板:

<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:tem="http://tempuri.org/" …
Run Code Online (Sandbox Code Playgroud)

asp.net wcf soapui datamember operationcontract

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

Log4net每日滚动 - 带日期的文件名格式

我希望我的日志文件类似于date.filename.txt.每天推出新文件.

我能够以这种格式生成文件filename.date.txt.通过使用以下配置

 <appender name="SLSILogFileAppender" type="log4net.Appender.RollingFileAppender">
<file type="log4net.Util.PatternString" >
  <converter>
    <name value="logfilename" />
    <type
   value="FilenamePatternConverter" />
  </converter>

  <conversionPattern
    value="%property{TestURL}%logfilename{LocalApplicationData}" />
</file>
<appendToFile value="true" />
<rollingStyle value="Date" />
<staticLogFileName value="false" />
<datePattern value="'.'yyyy.MM.dd'.log'" />
<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
</appender>
Run Code Online (Sandbox Code Playgroud)

我尝试了很多东西,但没有任何帮助.

.net logging log4net config

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

RazorEngine - 命名空间导入编译错误

我在非MVC环境中使用Razor Engine(razorengine.codeplex.com).我编译存储在文件中的模板,@inherits用于智能感知支持.

  • RazorEngine大会
  • 自定义程序集 - 引用RazorEngine,包含View<>和设置View<>为基类
  • Web应用程序 - 引用RazorEngine,Custom Assembly,包含.cshtml模板文件

所有cshtml文件都有以下@inherits指令:

@inherits View<SomeModel>
Run Code Online (Sandbox Code Playgroud)

抛出错误:

找不到命名空间View的类型,是否缺少程序集引用?

我的web.config包含以下条目:

<add namespace="CustomAssembly.NamespaceContainingViewClass" />
Run Code Online (Sandbox Code Playgroud)

我认为这与其他条目有关<assemblies>,我CustomAssembly没有提到.是这样的吗?我可以使用另一个程序集中包含的自定义基类进行编译吗?

ps我无法检索程序集的强名称,因为我的自定义程序集引用了一个没有强名称的3d方程序集...

堆栈跟踪:

at RazorEngine.Compilation.DirectCompilerServiceBase.CompileType(TypeContext context)
at RazorEngine.Templating.TemplateService.CreateTemplate(String template, Type modelType)
at RazorEngine.Templating.TemplateService.GetTemplate(String template, Type modelType, String name)
at RazorEngine.Templating.TemplateService.Compile(String template, Type modelType, String name)
at RazorEngine.Razor.Compile(String template, Type modelType, String name)
Run Code Online (Sandbox Code Playgroud)

.net razor razorengine

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

带有数组的Powershell ConvertFrom-Json为数组值添加了额外的空格

使用ConvertFrom-Json编写powershell脚本时,似乎在将数组中的值转换为字符串时,会使用其他空格转换数组中的值.以下代码在一个小代码示例中显示:

$object = @"
     { 
          "object":
          {            
            "prop1": "value",
            "array":[
               { "key": "value"},
               { "key2": "valuevalue"},
               { "key3": "valuevalue"},
               { "key4": "valuevalue"},
               { "key5": "valuevalue"}
            ]
          }
     } 
"@ | ConvertFrom-Json

$object.object.prop1
$object.object.array.key

$t = $object.object.prop1
$t2= $object.object.array.key
"""$t"""
"""$t2"""
Run Code Online (Sandbox Code Playgroud)

输出:

value
value
"value"
"value    "
Run Code Online (Sandbox Code Playgroud)

最后一个值来自哪个额外空格?向数组添加更多值对时,会添加更多空格.

arrays powershell json

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

自定义log4net appender中的日志记录/错误处理

我们有一个内部开发的日志系统,我们希望获得log4net的好处,例如能够同时使用多个appender.我们决定将旧的日志记录系统转移到自定义的log4net appender中.当遗留系统配置正确时,这很有效,但遗留记录器实际上写入了WCF客户端(使得详细日志记录变慢,我们想要使用其他log4net appender的原因),最近WCF配置不是很好本来应该.当发生这种情况时,应用程序似乎运行正常,但显然遗留系统的自定义appender无法正常工作.其他appender工作正常,但自定义旧版appender没有输出,也没有错误消息表明存在问题.

处理"递归"日志记录的正确方法是什么,即从自定义log4net appender内部进行日志记录?我尝试了一个天真的解决方案:从静态对象抓取log4net并在appender中记录:

public class MyCustomAppender : AppenderSkeleton
{

    protected override void Append(log4net.Core.LoggingEvent loggingEvent)
    {
        try
        {
            // something which throws here...
        }
        catch (Exception ex)
        {
            log4net.LogManager.GetLogger(this.GetType()).Error(this.GetType().ToString() + ": error during append", ex);
        }
   }
}
Run Code Online (Sandbox Code Playgroud)

这是一个严重的失败,"System.Threading.LockRecursionException:在这种模式下不允许递归读取锁定." 很公平; 这是天真的解决方案.

我也尝试过:

this.ErrorHandler.Error(this.GetType().ToString() + ": error during append", ex);
Run Code Online (Sandbox Code Playgroud)

在异常处理程序中,因为它似乎可能是正确的.什么都不明显.

有没有办法在appender中通过log4net记录错误?或者我是否必须直接执行类似硬编码写入Windows事件日志的操作?显然存在无限递归下降的巨大危险,但我认为会有一些方法让操作员知道其中一个appender无法运行.

JR

log4net log4net-appender

5
推荐指数
1
解决办法
1896
查看次数