我有一个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)
关于我做错什么的任何想法?
我正在尝试编写一个简单的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) 我正在使用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#编写)直接读取/写入数据(没有服务器的直接文件访问)到firebird数据库文件.为了更好的交换,我希望(un)在导入/导出时压缩它们,以便通过互联网进行更好的交换,而无需外部程序来(不)压缩它们.
我知道#ziplib支持Zip,GZip,Tar和BZip2.
你知道C#还有哪些免费的压缩库?是否有支持LZMA的.NET库,因此我可以读/写".7z"文件?
我有一个问题,EF 4.1没有调用,OnModelCreating所以我可以配置表等我有一个现有的数据库.这是我的连接字符串:
<add name="AcmeDBContext"
connectionString="metadata=res://*/|res://*/|res://*/;
provider=System.Data.SqlClient;
provider connection string="
data source=[server];
initial catalog=Acme;integrated security=True;
multipleactiveresultsets=True;App=EntityFramework""
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)不会在目前情况下存在,当我试图查询任何东西.
假设我有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);
我错过了什么吗?或者模拟委托调用通常不是一个好主意?
谢谢.
如果我使用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)
这是打算,还是我弄乱了?
谢谢
我正在使用Visual Studio Code在Mac上开发ASP.NET 5应用程序.为了在我的.cs文件中使用新类(框架或第三方),我需要
project.json再using语句添加到我的.cs文件中.似乎应该有一种更好的方法来导入新功能,而不涉及搜索正确的NuGet和正确的命名空间.有什么建议?
Android上有睡眠阶段/等级的概念吗?
通过浏览邮件列表,我知道存在一个名为"深度睡眠"的阶段.当设备达到此状态时,所有应用程序的执行是否停止?如果是这样,除了用户点击电源按钮,还有什么可以唤醒设备?
c# ×8
asp.net-core ×2
7zip ×1
android ×1
azure ×1
binary-diff ×1
chromium ×1
compilation ×1
compression ×1
dbcontext ×1
delegates ×1
gyp ×1
katana ×1
linq ×1
logging ×1
lzma ×1
moq ×1
omnisharp ×1
owin ×1
sleep ×1
stream ×1
unit-testing ×1