我遇到了一个特别有趣的情况.我有一个通用的错误处理例程当前工作.最近我注意到了一个有点奇怪的行为: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) 我最近接触过一些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文件句柄吗?或者它可以是完全不同的东西,比如传统的实现?
我有一个自定义过滤器属性,改编自当前为 .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 下保持相同的行为?
就像位图(bmp)只是表示白/黑或颜色的二维数组一样 - 是否有人知道一个简单的三维位图的类似"结构"类型?换句话说,表示黑/白或颜色的三维值数组?
看起来有很多问题可以通过这种"点云"类型的结构相对容易地解决.
换句话说,在没有进入整个3d渲染世界的情况下,一些问题似乎可以通过更简单的数据结构来解决,而且通常涉及有效管理3d对象(使用OpenGL,DirectX,Axiom,GDI +等)的数学要少得多.
据我所知,这种结构在各种矢量上都不会"高效" - 但似乎可能存在一些似乎适合3d对象的"模型"的问题.
使用算法从其他3d文件类型(例如STL,Mesh,POV,BLEND等)生成这样的点云也是有帮助的.也许其中一个已经是这样的结构?(新手):)
任何建议或信息非常感谢.提前致谢.
我正在尝试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附近搜索,但没有发现类似的错误报告; 似乎我错过了一些非常明显的东西但是唉 - 我的咖啡用完了.我会很感激任何提示.