小编Nik*_*dze的帖子

从作为Azure Web App托管的ASP.NET 5应用程序进行日志记录

我有一个ASP.NET 5 Web API,我在Azure中作为Web App托管.我想使用Azure诊断程序从我的代码中记录消息.有很多文章包括Azure文档,它们表明它应该像System.Diagnostics.Trace.WriteLine启用它一样简单.日志应显示LogsFiles/Application在Azure 下的日志流中和日志流中.

我为Web应用启用了应用程序日志记录:

在此输入图像描述

但以下调用不会生成日志:

System.Diagnostics.Trace.TraceError("TEST");
System.Diagnostics.Trace.TraceInformation("TEST");
System.Diagnostics.Trace.TraceWarning("TEST");
System.Diagnostics.Trace.WriteLine("TEST");
Run Code Online (Sandbox Code Playgroud)

我试图手动定义TRACE符号,但没有运气:

在此输入图像描述

我还尝试使用新Microsoft.Extensions.Logging框架并使用ILogger.LogAPI,但没有任何结果:

public void Configure(IApplicationBuilder app, 
                      IHostingEnvironment env, 
                      ILoggerFactory loggerFactory)
{
    loggerFactory.MinimumLevel = LogLevel.Debug;

    var sourceSwitch = new SourceSwitch("Sandbox.AspNet5.ApiApp-Demo");
    sourceSwitch.Level = SourceLevels.All;
    loggerFactory.AddTraceSource(sourceSwitch, 
                                 new ConsoleTraceListener(false));
    loggerFactory.AddTraceSource(sourceSwitch, 
                                 new EventLogTraceListener("Application"));
}
Run Code Online (Sandbox Code Playgroud)

关于我做错什么的任何想法?

c# logging azure azure-diagnostics asp.net-core

21
推荐指数
3
解决办法
5875
查看次数

如何在自定义Owin中间件中安全拦截响应流

我正在尝试编写一个简单的OWIN中间件,以拦截响应流.我要做的是用自定义的基于Stream的类替换原始流,在那里我将能够拦截对响应流的写入.

但是,我遇到了一些问题,因为我无法知道响应是否已被链中的内部中间件组件完全写入.Dispose永远不会调用Stream 的覆盖.所以我不知道什么时候进行我的处理,这应该发生在响应流的末尾.

这是一个示例代码:

public sealed class CustomMiddleware: OwinMiddleware
{
    public CustomMiddleware(OwinMiddleware next)
        : base(next)
    {
    }

    public override async Task Invoke(IOwinContext context)
    {
        var request = context.Request;
        var response = context.Response;

        // capture response stream

        var vr = new MemoryStream();
        var responseStream = new ResponseStream(vr, response.Body);

        response.OnSendingHeaders(state =>
        {
            var resp = (state as IOwinContext).Response;
            var contentLength = resp.Headers.ContentLength;

            // contentLength == null for Chunked responses

        }, context);

        // invoke the next middleware in the …
Run Code Online (Sandbox Code Playgroud)

c# stream owin katana owin-middleware

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

从Mac上的命令行运行ASP.NET 5应用程序时是使用launchSettings.json吗?

我正在使用Mac上的Visual Studio代码开发ASP.NET 5 Web API应用程序.我手动修改了我的Properties/launchSettings.json文件,Staging使用ASPNET_ENV环境变量为所有配置文件设置环境: 在此输入图像描述

但是,当我dnx web在Mac终端上运行启动应用程序时,我仍然得到Production环境: 在此输入图像描述

launchSettings.json如果我在Mac上使用Visual Studio Code,我可以用来指定环境变量(以及环境类型)吗?或者它是否特定于完整的Visual Studio?

ASP.NET 5文档建议launchSettings.json可以用于注入环境变量.然而,这个SO讨论建议通过命令传递它们.

c# configuration environment-variables asp.net-core

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

支持7zip(LZMA)的C#免费压缩库

我有一个程序(用C#编写)直接读取/写入数据(没有服务器的直接文件访问)到firebird数据库文件.为了更好的交换,我希望(un)在导入/导出时压缩它们,以便通过互联网进行更好的交换,而无需外部程序来(不)压缩它们.

我知道#ziplib支持Zip,GZip,Tar和BZip2.

你知道C#还有哪些免费的压缩库?是否有支持LZMA的.NET库,因此我可以读/写".7z"文件?

c# compression 7zip lzma

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

EF 4.1 OnModelCreating未调用

我有一个问题,EF 4.1没有调用,OnModelCreating所以我可以配置表等我有一个现有的数据库.这是我的连接字符串:

<add name="AcmeDBContext"
     connectionString="metadata=res://*/|res://*/|res://*/;
                       provider=System.Data.SqlClient;
                       provider connection string=&quot;
                       data source=[server];
                       initial catalog=Acme;integrated security=True;
                       multipleactiveresultsets=True;App=EntityFramework&quot;"
     providerName="System.Data.EntityClient" />
Run Code Online (Sandbox Code Playgroud)

这是我的继承自的类DbContext:

public class AcmeDBContext : DbContext
{
  public AcmeDBContext()
    : base()
  {
    Database.SetInitializer<AcmeDBContext>(null);        
  }

  protected override void OnModelCreating(DbModelBuilder modelBuilder)
  {
    modelBuilder.Conventions.Remove<IncludeMetadataConvention>();
    modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();       
    modelBuilder.Entity<Vehicle>().ToTable("tblVehicle");
    modelBuilder.Entity<VehicleMake>().ToTable("tblVehicleMake");
    modelBuilder.Entity<VehicleModel>().ToTable("tblVehicleModel");
    base.OnModelCreating(modelBuilder);
  }

 }
Run Code Online (Sandbox Code Playgroud)

我已经在线阅读和阅读,但我不能指出问题所在.该OnModelCreating不会被调用,因此例外说,实体/类(汽车,VehicleMake,VehicleModel)不会在目前情况下存在,当我试图查询任何东西.

c# entity-framework-4.1 dbcontext

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

使用Moq模拟Delegate.Invoke()会在LINQ中引发InvalidCast异常

假设我有IService界面:

public interface IService
{
    string Name { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

还有一个Func<IService>返回此接口的委托.

在我的单元测试中,我想Invoke()使用Moq 模拟委托的方法,如下所示:

[TestMethod]
public void UnitTest()
{
    var mockService = new Mock<IService>();

    var mockDelegate = new Mock<Func<IService>>();
    mockDelegate.Setup(x => x.Invoke()).Returns(mockService.Object);

    // The rest of the test
}
Run Code Online (Sandbox Code Playgroud)

不幸mockDelegate.Setup(...)抛出System.InvalidCastException:

测试方法UnitTest抛出异常:

System.InvalidCastException:无法将类型为"System.Linq.Expressions.InstanceMethodCallExpressionN"的对象强制转换为"System.Linq.Expressions.InvocationExpression".

在Moq.ExpressionExtensions.GetCallInfo(LambdaExpression表达式,模拟模拟)

在Moq.Mock.<> c_ DisplayClass1c`2.b _1b()

在Moq.PexProtector.Invoke(Func`1函数)

在Moq.Mock.Setup(模拟1 mock, Expression1表达式,条件条件)

在Moq.Mock 1.Setup(Expression1表达)

在UnitTests.cs中的UnitTest():第38行

38号线是 mockDelegate.Setup(x => x.Invoke()).Returns(mockService.Object);

我错过了什么吗?或者模拟委托调用通常不是一个好主意?

谢谢.

c# linq delegates unit-testing moq

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

如何编译Google Courgette工具?

Courgette(说明,来源)是一种Google工具,用于有效地更新Chrome.

它似乎是一个伟大且易于使用的工具,但我无法编译它.我已经尝试过VS2010,GYP并直接使用C++编译器,但都失败了.

有没有人对如何编译Courgette有任何建议?

google-chrome compilation binary-diff chromium gyp

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

在.net web api属性路由中的控制器级别使用Route而不是RoutePrefix

如果我使用Route属性装饰这个web api控制器,我可以点击该方法

[Route("api/v{version}/bank-accounts")]
public class BankAccountsController : ApiController
{
    [HttpGet]
    public HttpResponseMessage GetBankAccounts()
    {
        //...
    }
}
Run Code Online (Sandbox Code Playgroud)

但是如果我使用RoutePrefix而不能让它工作,除非我同时使用Route("")

[RoutePrefix("api/v{version}/bank-accounts")]
public class BankAccountsController : ApiController
{
    [HttpGet]
    [Route("")]
    public HttpResponseMessage GetBankAccounts()
    {
        //...
    }
}
Run Code Online (Sandbox Code Playgroud)

这是打算,还是我弄乱了?

谢谢

c# asp.net-web-api attributerouting

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

在Visual Studio Code中自动添加NuGet依赖项和使用语句?

我正在使用Visual Studio Code在Mac上开发ASP.NET 5应用程序.为了在我的.cs文件中使用新类(框架或第三方),我需要

  1. 手动添加的NuGet依赖于project.json
  2. 手动将using语句添加到我的.cs文件中.

似乎应该有一种更好的方法来导入新功能,而不涉及搜索正确的NuGet和正确的命名空间.有什么建议?

c# omnisharp visual-studio-code

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

Android:Android设备上的睡眠阶段/等级?

Android上有睡眠阶段/等级的概念吗?

通过浏览邮件列表,我知道存在一个名为"深度睡眠"的阶段.当设备达到此状态时,所有应用程序的执行是否停止?如果是这样,除了用户点击电源按钮,还有什么可以唤醒设备?

android sleep

11
推荐指数
1
解决办法
8068
查看次数