每当我尝试运行具有应用程序洞察力和实体框架的webjob项目时,我都会收到此错误.
System.IO.FileLoadException:'无法加载文件或程序集'System.Runtime.InteropServices.RuntimeInformation,Version = 0.0.0.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a'或其依赖项之一.定位的程序集的清单定义与程序集引用不匹配.(HRESULT异常:0x80131040)'
我安装了以下nuget包
Microsoft.Azure.WebJobs.Logging.ApplicationInsights版本2.1.0-beta4
Microsoft.Extensions.Logging版本2.0.0
Microsoft.Extensions.Logging.Console版本2.0.0.
这一切都适用于一个新的Visual Studio 2017 webjob项目,当我尝试包含现有的代码库时,主要使用实体框架,我得到了这个错误.当我查看工作中的引用时,我没有System.Runtime.InteropServices.RuntimeInformation,但它已经添加到具有实体框架的项目中.它似乎是.net标准的一部分,但为什么我的新控制台应用程序不需要.net标准!
我不确定它为什么寻找版本0.0.0.0,因为我的版本是4.0.2.0
我也尝试将其添加到项目文件中,但这不起作用.
<PropertyGroup>
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
<GenerateBindingRedirectsOutputType>true</GenerateBindingRedirectsOutputType>
</PropertyGroup>
Run Code Online (Sandbox Code Playgroud)
任何帮助将不胜感激
非常感谢
我有一个MVC网络应用程序,我正在使用Simple Injector进行DI.我的几乎所有代码都包含在单元测试中.但是,现在我已经在某些控制器中添加了一些遥测调用,我在设置依赖项时遇到了麻烦.
遥测调用用于将指标发送到Microsoft Azure托管的Application Insights服务.该应用程序未在Azure中运行,只是一个带有ISS的服务器.AI门户网站会告诉您有关应用程序的各种信息,包括使用遥测库发送的任何自定义事件.因此,控制器需要一个Microsoft.ApplicationInsights.TelemetryClient实例,该实例没有接口,并且是一个带有2个构造函数的密封类.我试着像这样注册它(混合生活方式与这个问题无关,我只是为了完整而包含它):
// hybrid lifestyle that gives precedence to web api request scope
var requestOrTransientLifestyle = Lifestyle.CreateHybrid(
() => HttpContext.Current != null,
new WebRequestLifestyle(),
Lifestyle.Transient);
container.Register<TelemetryClient>(requestOrTransientLifestyle);
Run Code Online (Sandbox Code Playgroud)
问题是,由于TelemetryClient有2个构造函数,SI抱怨并且验证失败.我找到了一篇文章,展示了如何覆盖容器的构造函数解析行为,但这似乎相当复杂.首先,我想要备份并提出这个问题:
如果我没有使TelemetryClient成为一个注入的依赖项(只是在类中创建一个新的),那么在每次运行单元测试时是否会将遥测发送到Azure,从而产生大量错误数据?或者Application Insights是否足够聪明,知道它在单元测试中运行,而不是发送数据?
对此问题的任何"见解"将不胜感激!
谢谢
c# unit-testing azure simple-injector azure-application-insights
我正在将Azure Application Insights用于网站(Azure应用服务).在那,我正在使用集群Umbraco设置和hangfire.这两个人每分钟都在不断地访问数据库,并充斥着我的"App Insights".
所以我的问题是,如何禁用Sql Dependency Tracker?我看过ApplicationInsights.config并找不到任何明显的东西.我可以看到Microsoft.ApplicationInsights.DependencyCollector哪个可能是负责任的,但我不想删除所有类型的依赖遥测,只有 sql.
谢谢
我有一个现有的Web项目.我点击了"将应用程序洞察遥测添加到项目",并在此过程中的某个时刻发出错误,例如"[...]无法初始化powershell主机[...]".然后我根据谷歌的搜索尝试了一些东西.项目中没有ApplicationInsights.config,也没有引用Microsoft.ApplicationInsights.Telemetry.Services.
现在没有"添加应用程序洞察遥测到项目"选项可以在任何地方找到.我甚至尝试重新安装Application Insights扩展.
我试图通过git回滚任何更改,但没有运气.
非我的队友在VS中看到"将应用程序洞察遥测到项目"选项.(我们都使用Visual Studio Ultimate 2013 Update 4)
如果我不能让它工作,有没有办法手动设置它?
这可能是一个愚蠢的问题,但客户端应用程序的见解是否可以避免欺骗?Microsoft要求您在需要记录的HTML页面中添加一些JavaScript,其中一部分包含硬编码的检测密钥(下面不是真正的密钥!):
instrumentationKey: "3D486E8C-BDEF-43AB-B27A-9D3F9D42EC14"
Run Code Online (Sandbox Code Playgroud)
Url和密钥或任何机制之间似乎没有任何其他关系来防止这个关键客户端的欺骗(即随机生成具有不同数字的密钥并提交页面).
这不会造成任何损害,但对于不正确的监控数据的接收器来说会很烦人,这可能是所有人都想做的"因为他们可以".
我是否错过了一些基本原因,为什么这是不可能的?
我在Application Insights Analytics中有一些数据,它将动态对象作为自定义维度的属性.例如:
| timestamp | name | customDimensions | etc |
|-------------------------|---------|----------------------------------|-----|
| 2017-09-11T19:56:20.000 | Spinner | { | ... |
MyCustomDimension: "hi"
Properties:
context: "ABC"
userMessage: "Some other"
}
Run Code Online (Sandbox Code Playgroud)
那有意义吗?所以customDimensions中的键/值对.
我试图将该context属性调出为结果中的适当列.所以预期会是:
| timestamp | name | customDimensions | context| etc |
|-------------------------|---------|----------------------------------|--------|-----|
| 2017-09-11T19:56:20.000 | Spinner | { | ABC | ...
MyCustomDimension: "hi"
Properties:
context: "ABC"
userMessage: "Some other"
}
Run Code Online (Sandbox Code Playgroud)
我试过这个:
customEvents | where name == "Spinner" | extend Context = customDimensions.Properties["context"]
Run Code Online (Sandbox Code Playgroud)
还有这个:
customEvents | …Run Code Online (Sandbox Code Playgroud) 是否可以在Application Insights Analytics中更改散点图中渲染点的颜色?
我正在研究一些数据和分析显然认为浅蓝色和浅绿色是渲染这个的最佳方式,我不这样做.颜色之间更好的对比将是有益的.
图表的图像
Microsoft.ApplicationInsights.AspNetCore v2.6.1与 .net core v2.2.2 一起使用时,我可以看到 Azure Application Insight Live Metric Stream 中的遥测数据,但我没有看到我尝试在控制器ILogger内部Startup.cs或控制器中记录的条目。
我试过.UseApplicationInsights()用WebHost.CreateDefaultBuilder在Program.cs和也Startup.cs像这样,但无济于事。
services.AddApplicationInsightsTelemetry( options => {
options.EnableDebugLogger = true;
});
Run Code Online (Sandbox Code Playgroud)
我看到传入的请求和请求失败率,但没有日志条目
this.logger.Log(LogLevel.Error, $"Test Error {Guid.NewGuid().ToString()}");
this.logger.LogTrace($"Test Trace {Guid.NewGuid().ToString()}");
this.logger.LogInformation($"Test Information {Guid.NewGuid().ToString()}");
this.logger.LogWarning($"Test Warning {Guid.NewGuid().ToString()}");
this.logger.LogCritical($"Test Critical {Guid.NewGuid().ToString()}");
this.logger.LogError($"Test Error{Guid.NewGuid().ToString()}");
this.logger.LogDebug($"Test Debug {Guid.NewGuid().ToString()}");
Run Code Online (Sandbox Code Playgroud) 我已经在我的asp.net 4.6 Web应用程序中添加了应用程序见解.
这也添加了文件 Service References\Application Insights\ConnectedService.json
这个文件的内容:
{
"ProviderId": "Microsoft.ApplicationInsights.ConnectedService.ConnectedServiceProvider",
"Version": "7.1.719.1",
"GettingStartedDocument": {
"Uri": "https://go.microsoft.com/fwlink/?LinkID=613413"
}
}
这个档案是什么?它似乎没有为我的应用程序提供任何逻辑,似乎并不需要任何工作.
我遇到的问题是我的IdentityServer的/ connect/introspect端点有时真的很慢(一次调用10秒).如下所示,大多数呼叫(18k)快速执行(<250ms).
我启用了新的Application Insights分析,大多数慢速跟踪如下所示:
正如Application Insights剖析器页面上所述:
BLOCKED_TIME表示代码正在等待另一个资源可用,例如等待同步对象,等待线程可用或等待请求完成.
但我没有理由相信这应该等待一些事情.请求中没有高峰,因此我认为没有可用的线程或其他东西.内存似乎对我们的应用服务计划没有问题,因为它总是大约40%.我也挖掘了IdentityServer4的来源,但无法确定任何原因.所以现在我有点卡住了.有人能指出这些缓慢请求的可能原因吗?或者指出我确定原因的好方向?任何帮助都感激不尽!
使用一些额外信息进行编辑:我们使用IdentityServer4.EntityFramework在sql azure db中存储引用令牌.我查看了Application Insights,这些慢速请求中的查询执行时间不到50毫秒.所以我猜它不是数据库.
c# profiler json.net azure-application-insights identityserver4
azure-application-insights ×10
azure ×6
c# ×4
asp.net ×1
asp.net-core ×1
json ×1
json.net ×1
logging ×1
profiler ×1
unit-testing ×1
webjob ×1