我们有一个内部开发的日志系统,我们希望获得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
我创建了一个Azure API应用程序并将其部署到Azure.首先,我从门户网站获取Swagger文件没有问题(即通过单击API App刀片上的"API定义"按钮),但在某些时候它停止工作.
我已经启用了Swagger UI App_Start\SwaggerConfig.cs.当我在本地调试时,我可以导航到http:// localhost:12345/Swagger以进入Swagger UI并下载Swagger文件,一切正常.当我去门户网站时,我得到500错误,试图访问https://microsoft-apiappad6cxxxxxxxxxxxx426c23a66.azurewebsites.net:443/swagger/docs/v1.
我已经尝试删除API应用程序并重新部署它......没有运气.我已经尝试启动一个新项目并使用它创建相同的界面并将其部署到Azure ...每次都可以使用(当然).
我会在这里包含Swagger文件,以防它重要,但我不明白的是:为什么Swashbuckle会在本地工作,而不是在Azure工作?
{
"swagger": "2.0",
"info": {
"version": "v1",
"title": "StorefrontApi"
},
"host": "localhost:52912",
"schemes": [
"http"
],
"paths": {
"/api/v1/storefront/applications": {
"get": {
"tags": [
"GET"
],
"operationId": "Storefront_Applications",
"consumes": [],
"produces": [
"application/json",
"text/json",
"application/xml",
"text/xml"
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/Object"
}
}
},
"deprecated": false
}
},
"/api/v1/storefront/aurorastatus": {
"get": {
"tags": [
"GET"
],
"operationId": "Storefront_AuroraStatus", …Run Code Online (Sandbox Code Playgroud) 有没有办法让DBI连接到RedBrick数据库?我没有在任何地方看到司机,而且很少讨论这个问题.
我正在使用ZendFramework 2和TableGateway,它适用于普通的select语句.但我似乎无法找到如何使用ZendFramework 2选择获得最大列.我的选择看起来应该是这样的
SELECT MAX( `publication_nr` ) AS maxPubNr FROM `publications`
Run Code Online (Sandbox Code Playgroud)
我的代码看起来像:
use Zend\Db\TableGateway\TableGateway;
class PublicationsTable
{
protected $tableGateway;
...
public function getMaxPubicationNr()
{
$rowset = $this->tableGateway->select(array('maxPubNr' => new Expression('MAX(publication_nr)')));
$row = $rowset->current();
if (!$row) {
throw new \Exception("Could not retrieve max Publication nr");
}
return $row;
}
Run Code Online (Sandbox Code Playgroud) 我试图找到解决方案,但我无法找到它.这就是我在这里问的原因.:)
我有一个任务列表,它有两个项目
List<Task<int>> tasks = new List<Task<int>>();
tasks.Add(Task.FromResult(1));
tasks.Add(Task.FromResult(2));
Run Code Online (Sandbox Code Playgroud)
当我调用await Task.WhenAll(tasks)时,它返回int []但我希望它应该返回List<int>.如下所示:
List<int> result = await Task.WhenAll(tasks);
Run Code Online (Sandbox Code Playgroud)
我想在得到结果后在列表中添加新项目.
假设我有以下课程:
Class MainClass
{
private OtherClass1;
MainClass()
{
OtherClass1 = new OtherClass1();
}
void dispose()
{
OtherClass1 = null;
}
}
class OtherClass1
{
private OtherClass2;
OtherClass1()
{
OtherClass2 = new OtherClass2();
}
}
class OtherClass2
{
}
Run Code Online (Sandbox Code Playgroud)
如果我实例化MainClass并稍后调用dispose方法,那么OtherClass1是否会被垃圾收集(稍后)?或者我是否首先清除对OtherClass2的引用?
我正在XNA中制作游戏,目前我正在检查鼠标点击的坐标与每个可以点击的对象的坐标.
这对我的小游戏来说很好,但是对于较大的游戏来说,检查每个帧的每个对象都会占用大量CPU.
有没有更好的方法来解决这个问题?
我会尝试尽可能具体.我正在使用visual basic 2010 c#express edition.我正在尝试创建一个充满程序信息的文本框.假设我在文本框中输入文本"Hello",当我运行它时,表单有一个文本框说Hello.在这里,用户可以选择文本并进行复制.基本上,当鼠标移过文本框时,它会改变外观并且文本框是交互式的.我需要做的是文本框不是交互式的.在文本框属性中,有一个名为"已启用"的选项.如果我将其设为False,我的所有要求都会得到满足.但是文本框是灰色的.有没有办法让"启用"为假,仍然使文本框看起来不灰显.我的问题是关于美学.
我的问题是我的数据库日志不显示秒(默认格式似乎是“yyyy-MM-dd hh:mm:00”。有什么方法可以改变这一点并至少获得几秒钟的东西(毫秒将是一个加号) )?
这是我的附加程序配置:
<appender name="AdoNetAppender" type="log4net.Appender.AdoNetAppender">
<bufferSize value="1" />
<connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<connectionString value="data source=MyDB;initial catalog=LogSpace;integrated security=True;persist security info=True;Application Name="MyApp "" />
<commandText value="INSERT INTO Log ([Date],[Thread],[Level],[Logger],[Message],[Exception]) VALUES (@log_date, @thread, @log_level, @logger, @message, @exception)" />
<parameter>
<parameterName value="@log_date" />
<dbType value="DateTime" />
<layout type="log4net.Layout.RawTimeStampLayout" />
</parameter>
<parameter>
<parameterName value="@thread" />
<dbType value="String" />
<size value="255" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%thread" />
</layout>
</parameter>
<parameter>
<parameterName value="@log_level" />
<dbType value="String" />
<size value="50" />
<layout type="log4net.Layout.PatternLayout"> …Run Code Online (Sandbox Code Playgroud) 我需要从我的WPF应用程序中编写PDF文件.我见过一些第三方库来创建PDF文件,但我找不到任何可以让我写盒子或任何形状的文件.我是否必须使用.NET中的某些2D库,或者是否有提供该类型工作的PDF库?
这是我需要绘制的:
我将有一个对象列表List<ObjX> list;,我将用它来填充每个框.例如,将其视为所有员工的个人数据列表.
____________________________________
{header_img}
| Name: {name} | Surname: {surname}|
| Address : {address} | City: {cit}|
____________________________________
Run Code Online (Sandbox Code Playgroud)
这是一个非常糟糕的绘画,我要做的是更详细,包括甚至图像.
我在web.config文件中设置了sessiontimeout,如下所示.
<sessionState timeout="120"
cookieless="false"
mode="InProc"
/>
Run Code Online (Sandbox Code Playgroud)
有时候上面的代码工作正常.但是很多次会话在10到15分钟后自动过期.
并且每个浏览器都存在此错误.
当我在我的本地计算机上使用.net运行相同的应用程序时,它工作正常.
请注意,我还没有创建global.ascx文件.