小编Pet*_*ter的帖子

自定义log4net appender中的日志记录/错误处理

我们有一个内部开发的日志系统,我们希望获得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

log4net log4net-appender

5
推荐指数
1
解决办法
1896
查看次数

门户网站不提供Azure API App Swagger

我创建了一个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)

c# azure azure-web-sites azure-api-apps

4
推荐指数
1
解决办法
6311
查看次数

Perl DBI可以连接到Redbrick吗?

有没有办法让DBI连接到RedBrick数据库?我没有在任何地方看到司机,而且很少讨论这个问题.

perl dbi redbrick

3
推荐指数
1
解决办法
139
查看次数

zendframework 2选择列的最大值

我正在使用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)

select max zend-framework2

3
推荐指数
1
解决办法
3683
查看次数

Task.WhenAll返回列表而不是数组

我试图找到解决方案,但我无法找到它.这就是我在这里问的原因.:)

我有一个任务列表,它有两个项目

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)

我想在得到结果后在列表中添加新项目.

c# linq asp.net task task-parallel-library

2
推荐指数
1
解决办法
3131
查看次数

.Net中的对象处理

假设我有以下课程:

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的引用?

.net c# dispose object

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

XNA:我点击了什么吗?

我正在XNA中制作游戏,目前我正在检查鼠标点击的坐标与每个可以点击的对象的坐标.

这对我的小游戏来说很好,但是对于较大的游戏来说,检查每个帧的每个对象都会占用大量CPU.

有没有更好的方法来解决这个问题?

.net c# xna

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

C#Windows表单文本框变灰了

我会尝试尽可能具体.我正在使用visual basic 2010 c#express edition.我正在尝试创建一个充满程序信息的文本框.假设我在文本框中输入文本"Hello",当我运行它时,表单有一个文本框说Hello.在这里,用户可以选择文本并进行复制.基本上,当鼠标移过文本框时,它会改变外观并且文本框是交互式的.我需要做的是文本框不是交互式的.在文本框属性中,有一个名为"已启用"的选项.如果我将其设为False,我的所有要求都会得到满足.但是文本框是灰色的.有没有办法让"启用"为假,仍然使文本框看起来不灰显.我的问题是关于美学.

c# textbox winforms

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

Log4Net AdoNetAppender - 格式化日志日期以获取包含的秒数

我的问题是我的数据库日志不显示秒(默认格式似乎是“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=&quot;MyApp &quot;" />
  <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)

log4net log4net-configuration log4net-appender

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

在PDF文件上绘图C#

我需要从我的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)

这是一个非常糟糕的绘画,我要做的是更详细,包括甚至图像.

c# wpf drawing

0
推荐指数
1
解决办法
3565
查看次数

会话在超时前过期

我在web.config文件中设置了sessiontimeout,如下所示.

<sessionState timeout="120"
         cookieless="false"
          mode="InProc"
        />
Run Code Online (Sandbox Code Playgroud)

有时候上面的代码工作正常.但是很多次会话在10到15分钟后自动过期.

并且每个浏览器都存在此错误.

当我在我的本地计算机上使用.net运行相同的应用程序时,它工作正常.

请注意,我还没有创建global.ascx文件.

c# asp.net

0
推荐指数
1
解决办法
2984
查看次数