我正在设置一个新的 Web 应用程序以通过 Application Insights 进行日志记录。我已经安装了 AI,并且看到了所有预期的遥测(服务器请求、失败的请求等),但没有通过 ILogger 发送日志记录。我已经浏览了在 SO 上可以找到的所有类似问题,但没有一个解决了我的问题。
我正在使用 .NET 5 和 Microsoft.ApplicationInsights.AspNetCore nuget 包的版本 2.17.0(最新稳定版)。连接字符串和检测密钥显示正确。我尝试在 TelemetryConfiguration 中打开开发人员模式。我正在尝试记录每个级别的日志,并且我的代码在功能上与我找到的所有示例相同。
我将 ApplicationInsights 的默认 LogLevel 设置为“Trace”:
VS 中的输出窗口显示,当我登录时,正在发送跟踪遥测数据:
但我在 Application Insights 中没有看到任何日志记录!我完全被难住了。任何有关解决此问题的帮助将不胜感激。谢谢你!
我正在尝试在Angular 2环境中管理计时器,而clearTimeout似乎只能在大约一半的时间内正常工作.我在用TypeScript写作.
我将计时器保留在自己的服务中:
export class TimeoutService {
constructor(
private router: Router,
private httpService: HttpService
) {}
//Properties
private timer;
//Methods
public clearTimer() {
clearTimeout(this.timer);
}
private logOut() {
return this.httpService.Post('api/session/logout', '');
}
private redirectToTimeoutPage() {
this.router.navigate(['/timeout']);
}
public refreshTimer() {
console.log('refreshing timer');
if (this.timer) {
this.clearTimer();
this.setTimer();
}
}
public startTimer() {
this.setTimer();
}
private setTimer() {
this.timer = setTimeout(() => {
this.logOut()
.then(() => {
this.clearTimer();
this.redirectToTimeoutPage();
});
}, 30000);
}
}
Run Code Online (Sandbox Code Playgroud)
我从refreshTimer方法的console.log中知道,当我期望它时,它会被调用,而不是其他.但是,大多数情况下,较早的计时器不会被clearTimeout调用取消,并且即使它们应该被新的计时器取代,它们也会在30秒后启动.
我已经完成了其他有关这方面的问题,就我所见,没有一个适用于我的情况.
我得到的一个线索,我无法破译,如果我将调用移到this.setTimer()
refreshTimer中,那么clearTimeout调用似乎工作正常.换句话说,创建一个新计时器会以某种方式导致旧计时器生存.我在这里错过了什么?
谢谢!
我一直在努力将Jasmine单元测试添加到我的Angular 2项目中,并且最近更新了一些NPM包.我看到两个不同的错误,我怀疑是相关的(因此将它们合并在一个问题中).
首先,我收到一个构建错误,阻止我构建我的项目.当我在Angular-CLI中运行> ng build时,所有的块看起来都是正确创建的,但是我得到一个错误的墙,指向我引用全局文档或窗口变量的每个地方.错误看起来像这样:
或者,替代地,"找不到名称'窗口'." 这些引用在Visual Studio中没有更新,并且我已经使用它们很长时间没有问题,所以我猜这与最近更新我的Typescript版本有关?
同样,在我的新测试文件中,所有Jasmine引用都被修改为未知名称.
有趣的是,测试没有抱怨; 只是Visual Studio将标记放在我的测试文件中.我已经查看了很多关于这个问题的SO问题,发现没有一个解决方案可以解决我的问题.
这是我的tsconfig.json的样子:
我已经检查过TypeRoots路径是否正确以及是否安装了这些NPM模块.
还有我的package.json:
我有一个从BLL(我的控件之外)作为DataSet返回的数据.我知道它只占用了相关表的一行,所以我这样访问它:_appData = myDataSet.Tables["TableName"].Rows[0]
.然后,我通过使用列名称调用该行来访问各个数据点:_appData["ColumnName"].ToString()
.
这适用于我的大多数数据,但我知道存在的列有一个"列不属于表"错误.这是调试模式中的错误:
正如您所看到的那样,列被称为"hadDataCompromise".这是当我打破并深入挖掘DataSet - >表 - >列时出现的列:
为了更好地衡量,我尝试使用我在实际代码中使用的完全相同的语法访问立即窗口中的列,该代码完美地工作,返回预期值:
任何线索为什么会发生这种情况?似乎没有类似的问题适用于我的问题(大多数问题涉及拼写错误或无关的引号或括号).同样,代码适用于大多数列,但在这一列上随机中断.谢谢!
我使用Angular 2 RC 1构建了一个应用程序.它将部署的各种环境具有不同的URL基本路径(本地它是localhost:12345 /,在开发服务器上它可能是192.168.1.1/myapp,在QA上它可能是192.168.2.2/testapp等).我想使用标签来处理这些差异,告诉Angular在本地查找根文件夹,在dev的myapp文件夹中查找QA的testapp文件夹,依此类推.
然而,Angular似乎完全忽略了基本标记.我正在成功设置它,当我查看我的应用程序的页面源时,我按预期看到它.但是,Angular总是在根文件夹中查找文件,即使设置了基本href也是如此.
我的标签看起来像这样:
<head>
<base href="/myapp">
etc...
Run Code Online (Sandbox Code Playgroud)
这是头部内的第一个标签.我的期望是Angular应该在localhost:12345/myapp中查找文件.但是它只使用localhost:12345 /.我对这个标签的理解是错误的,还是我有错误?
(作为旁注,我很确定当Angular引导时我无法设置基本URL,因为我需要从.NET web.config文件中提取它.我通过ViewBag这样做并且可以确认它填充正确.)
我使用loadChildren语法在我的Angular 2项目中设置了延迟加载.我遇到的问题是,在创建块之后,浏览器似乎不知道在哪里查找它们.它总是尝试从根目录加载块,例如http://localhost:55626/1.chunk.js
.这当然不是它们存储的地方.
我已经能够通过使用.NET捆绑器捆绑块来解决这个问题,但是当然这意味着它们在开始时都被加载并且无法使用延迟加载的目的.我猜这是一个问题,webpack默认在错误的位置查找创建的块,ng build
但我对此没有信心,即使我是对的,我也明白用angular-cli构建的项目目前做的不支持自定义webpack.config.js.
任何人都可以对这个问题有所了解吗?谢谢!
我正在使用Angular 2.4.6.
编辑:为了澄清,我使用angular-cli构建这个项目,它不支持自定义webpack.config文件,按照https://github.com/angular/angular-cli/issues/1656#issuecomment-240171375
我有一个基于我从服务器给出的数据动态生成的大表单.要生成单选按钮,我使用以下HTML:
<ng-container *ngSwitchCase="'RADIO'">
<td *ngFor="let option of item.SelectOptions">
<div class="input-group">
<input type="radio"
[(ngModel)]="item.PricingSelectIndex"
name="{{ item.UIName }}RadioButton"
id="{{ item.UIName }}{{ option.PricingSelectIndex }}"
[value]="option.PricingSelectIndex"
[disabled]="item.ReadonlyTF"
(click)="saveField(item.UIName, 'SelectIndex', option.PricingSelectIndex)" />
<label for="{{ item.UIName }}{{ option.PricingSelectIndex }}" style="margin-left: 5px;">
{{ option.Label }}
<i class="fa fa-question-circle" [tooltip]="item.TooltipText" placement="right" *ngIf="item.TooltipText"></i>
</label>
</div>
</td>
</ng-container>
Run Code Online (Sandbox Code Playgroud)
显然,这是较大页面的一部分,它从数据中查看每个项目,并根据项目的ControlType属性生成表单 - 这是单选按钮的HTML.数据项包括一个名为ReadonlyTF的属性,它告诉我是否应该禁用控件(例如只读).该项目包括一个SelectOptions属性,该属性是一个较小的项目数组,每个项目映射到集合中的一个单选按钮.(例如,我遇到问题的控件有两个SelectOptions,一个用于Yes,一个用于No.)因此每个单选按钮都生成相同的HTML.
这是奇怪的事情.在所讨论的控件中,生成的第一个单选按钮被禁用(这是我想要的),但第二个单选按钮不是.
如果你仔细观察,你可以看到是被禁用但是没有被禁用!以下是在Chrome的"元素"标签中呈现两个控件的方式:
两者都包括ng-reflect-is-disabled="true"
但只有第一个实际上是禁用的.第二个按钮丢失了ng-reflect-value
.同样,这些是使用完全相同的HTML片段呈现的.
我正在使用Angular 2.4.6,Typescript 2.1.5,bootstrap 3.3.7和angular-cli进行编译.组件中没有支持TS会影响这一点:我获取数据并将其弹出到一个属性中,然后由HTML模板拾取,就是这样.我认为它可能是某种变化检测问题,但强制它changeDetectorRef.detectChanges()
并没有做任何事情.我很难过,但我没有一个活跃的单选按钮坐在那里供任何人点击!
谢谢!
angular ×5
typescript ×2
.net ×1
asp.net ×1
asp.net-core ×1
c# ×1
dataset ×1
ilogger ×1
jasmine ×1
javascript ×1
webpack ×1