小编Ono*_*dai的帖子

HttpModule:如何在没有HttpContext的情况下处理HttpApplication错误?

我遇到了一个特别有趣的情况.我有一个通用的错误处理例程当前工作.最近我注意到了一个有点奇怪的行为:HttpApplication.Error会启动,但HttpContext.Current会为空.这是我的HttpModule上的相关内容:

public void Init(HttpApplication context)
{
    context.Error += context_Error;
    context.PostMapRequestHandler += context_PostMapRequestHandler;

}

void context_PostMapRequestHandler(object sender, EventArgs e)
{
    var aux = HttpContext.Current.Handler as Page;
    if (aux != null) aux.Error += context_Error;
}

void context_Error(object sender, EventArgs e)
{
    _localLog.Add("HttpApplication error handler reached.");
    try
    {
        if (HttpContext.Current == null)
        {
            _localLog.Add("No HttpContext.");
        }
        else
        {
            var objError = HttpContext.Current.Server.GetLastError();

            if (objError == null)
            {
                _localLog.Add("GetLastError(): no error.");
                return;
            }

            //[Proper error handler follows here...]
        }
    } …
Run Code Online (Sandbox Code Playgroud)

c# asp.net httpmodule httpapplication

8
推荐指数
0
解决办法
1023
查看次数

<*>符号的含义

我最近接触过一些Perl代码,它的某些方面对我来说仍然是难以捉摸的.就是这个:

@collection = <*>;
Run Code Online (Sandbox Code Playgroud)

我知道at符号定义collection为数组.我也搜索了一下,然后登陆perldoc,特别是关于I/O操作员的部分.我发现null filelhandle特别有趣; 代码如下.

while (<>) {
    ...
}
Run Code Online (Sandbox Code Playgroud)

在同一主题上我也注意到这个语法也是有效的:

while (<*.c>) {
    ...
}
Run Code Online (Sandbox Code Playgroud)

根据perldoc它实际上调用一个内部函数,其调用glob方式类似于以下代码:

open(FOO, "echo *.c | tr -s ' \t\r\f' '\\012\\012\\012\\012'|");
while (<FOO>) {
    ...
}
Run Code Online (Sandbox Code Playgroud)

第一行提到的小于,星号,超过(<*>)符号实际上做了什么?它是对内部开放和引用的glob的引用吗?它会是一个特殊情况,例如null文件句柄吗?或者它可以是完全不同的东西,比如传统的实现?

io perl perldoc

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

控制器级别的 ASP.NET Core 3.1 中 JsonOutputFormatter 的替代方案

我有一个自定义过滤器属性,改编自当前为 .NET Core 2.2 实现的这个答案,我想适应 3.1。它引用了 Newtonsoft.JSON,出于兼容性原因,我更愿意保持这种方式。

代码如下:

public class AllPropertiesAttribute : ActionFilterAttribute
{
    public override void OnActionExecuted(ActionExecutedContext ctx)
    {
        if (!(ctx.Result is ObjectResult objectResult)) return;

        var serializer = new JsonSerializerSettings { NullValueHandling = NullValueHandling.Include };
        serializer.Converters.Add(new StringEnumConverter());

        var formatter = new JsonOutputFormatter(serializer, 
                        ctx.HttpContext.RequestServices.GetRequiredService<ArrayPool<char>>());

        objectResult.Formatters.Add(formatter);
    }
}
Run Code Online (Sandbox Code Playgroud)

JsonOutputFormatter根据官方文档,仅支持 .net core 2.2 ;我应该如何继续在 3.1 下保持相同的行为?

c# asp.net-core asp.net-core-3.1

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

3D等效位图(bmp)

就像位图(bmp)只是表示白/黑或颜色的二维数组一样 - 是否有人知道一个简单的三维位图的类似"结构"类型?换句话说,表示黑/白或颜色的三维值数组?

看起来有很多问题可以通过这种"点云"类型的结构相对容易地解决.

换句话说,在没有进入整个3d渲染世界的情况下,一些问题似乎可以通过更简单的数据结构来解决,而且通常涉及有效管理3d对象(使用OpenGL,DirectX,Axiom,GDI +等)的数学要少得多.

据我所知,这种结构在各种矢量上都不会"高效" - 但似乎可能存在一些似乎适合3d对象的"模型"的问题.

使用算法从其他3d文件类型(例如STL,Mesh,POV,BLEND等)生成这样的点云也是有帮助的.也许其中一个已经是这样的结构?(新手):)

任何建议或信息非常感谢.提前致谢.

c# 3d graphics

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

Dapper和Oracle参数化查询 - ORA-01036:非法变量名称/编号

我正在尝试Dapper.以下代码完美无缺:

using (var conn = 
    new OracleConnection(
        "Uid=dbusr;Pwd=dbusrpwd;Server=oraserver;"))
{
    var col = 
        conn.Query<User>(
        "SELECT * FROM Users WHERE UserName = 'uid01'"
        , null)
        .ToList();
}
Run Code Online (Sandbox Code Playgroud)

但是如果不使用硬编码参数,我会尝试通过参数化查询和匿名类传递它,如下所示:

using (var conn = 
    new OracleConnection(
        "Uid=dbusr;Pwd=dbusrpwd;Server=oraserver;"))
{
    var col = 
        conn.Query<User>(
        "SELECT * FROM Users WHERE UserName = @Id"
        , new { Id = "uid01" })
        .ToList();
}
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

ORA-01036:非法变量名称/编号

我在SO附近搜索,但没有发现类似的错误报告; 似乎我错过了一些非常明显的东西但是唉 - 我的咖啡用完了.我会很感激任何提示.

c# oracle dapper

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