我一直在研究使用Castle Windsor将Log4Net ILog注入类的方法.在大多数例子中,我看到Castle Windsor可以提供一个提供属性注入的"辅助器",并注入ILogger(而不是ILog).我只找到了一个使用构造函数注入的示例,并且未使用辅助方法(请参阅Castle Windsor依赖注入:使用调用方类型作为参数)
在所有这些示例中,似乎Log4Net想要一个命名的记录器.大多数示例引用Log4Net静态方法LogManager.GetLogger(此处为类名).这使得在不使用反射或辅助方法的情况下定义CastleWindsor的依赖性是一个挑战(可以将辅助方法与ctor注入一起使用).在查看Ilya Kogan的问题(上面的URL ...)时,我想我不明白为什么需要,甚至想要一个命名的记录器.我不能在任何地方使用同名的记录器吗?
例如,我不能只用硬编码的XXX名称注册记录器吗?(它似乎工作正常,最后,我只想记录 - 我不关心哪个记录器记录它...)是否存在范围问题?是否存在内存泄漏问题?为什么记录器不能/不应该是单件?
public void Install(IWindsorContainer container, IConfigurationStore store)
{
container.Register(
Component.For<log4net.ILog>().UsingFactoryMethod(() => log4net.LogManager.GetLogger("xxx"))
);
}
Run Code Online (Sandbox Code Playgroud)
更新:
经过一些研究,可以使用硬编码的命名记录器 - 例如上面示例中的XXX,但是如果记录器的配置将记录器名称输出到日志文件,并且记录器名称是动态分配给与方法相同的名称,或者class,您可以自动获取对日志来源的引用.日志文件中的上下文可能非常有用.
当专门针对ctor注射时,似乎有5种可能的选择......
考虑以下xml
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns="mycompany.com.myservice">
<soap:Header>
<To xmlns="http://schemas.microsoft.com/ws/2005/05/addressing/none">http://mycompany.com/myservice</To>
<Action xmlns="http://schemas.microsoft.com/ws/2005/05/addressing/none">mycompany.com/myservice/dosomething</Action>
</soap:Header>
<soap:Body>
<mypayload>hello world</mypayload>
</soap:Body>
</soap:Envelope>
Run Code Online (Sandbox Code Playgroud)
是使用多个无别名的默认名称空间有效吗?
请考虑以下表格定义...
表定义
CREATE TABLE [dbo].[Folders](
[Id] [int] IDENTITY(1,1) NOT NULL,
[UserId] [int] NOT NULL,
[ParentFolderId] [int] NULL
PRIMARY KEY CLUSTERED
(
[Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
Run Code Online (Sandbox Code Playgroud)
其他表与此表的主键列具有外键关系[id]。
我希望添加一个自引用外键约束,其中父文件夹ID引用同一Folders表中另一条记录的ID字段,但UserId也必须匹配...
自引用外键约束
ALTER TABLE [dbo].[Folders] WITH CHECK ADD CONSTRAINT [FK_Folders_ParentFolder] FOREIGN KEY([UserId], [ParentFolderId])
REFERENCES [dbo].[Folders] ([UserId], [Id])
GO
ALTER TABLE [dbo].[Folders] CHECK CONSTRAINT [FK_Folders_ParentFolder]
GO
Run Code Online (Sandbox Code Playgroud)
...但是我遇到了错误...
失误
Msg 1776, Level 16, State …Run Code Online (Sandbox Code Playgroud) 我正在尝试测试一些关于运行缓慢的查询的理论 - 因此我希望我的查询运行缓慢。因此,我在我的收藏中省略了索引。当我运行db.mycollection.find({myfield: /.abc./}).sort({myfield2: 1}, {allowDiskUse: true})方法时,我收到以下错误...
Error: error: {
"ok" : 0,
"errmsg" : "Executor error during find command: OperationFailed: Sort operation used more than the maximum 33554432 bytes of RAM. Add an index, or specify a smaller limit.",
"code" : 96,
"codeName" : "OperationFailed"
}
Run Code Online (Sandbox Code Playgroud)
好的。我想继续在磁盘上排序,但似乎聚合框架命令“allowDiskUse:”对 find() 方法没有执行任何操作。我收到同样的错误。
“allowDiskUse”在与 find() 一起使用时有效,还是仅在与聚合框架一起使用时有效?
我似乎找不到任何说明它是特定于框架的文档,但话又说回来,它似乎不适用于 find()。也许这是一个宽松的答案。我想我正在寻求更具体的答案。
使用InstallShield 2012 Professional安装ASP.NET网站,以及在网络服务帐户的安全上下文中运行的自定义应用程序池.当我测试网站时,我遇到了权限问题(文件权限),并且网站失败并显示消息"错误:访问被拒绝.".
使用InstallShield,我为每个文件设置权限,以便对用户"Authenticated Users"进行读取访问.我通过导航到"应用程序数据" - >"文件和文件夹"在InstallShield ISM文件中设置权限
...然后对每个文件夹反复执行此操作,然后为每个文件执行此操作.
一旦我测试,我发现我有问题.如果我导航到服务器上安装的实际文件并进行检查,它们看起来是正确的,但无法正常运行.事实上,我 - 作为经过身份验证的用户 - 没有权限导航文件夹结构,但因为我是管理员,我可以调整权限并进入.如果我手动重置这些文件(和相关文件夹)的这些权限网站功能正常.这意味着应用程序池设置,文件副本和网络服务帐户都正常运行,并且问题严格与IIS尝试访问的文件的权限相关.
有没有人有这个问题,并克服它?如果是这样,怎么样?(我宁愿避免使用InstallScript来设置权限.)
jQuery UI 布局适用于较旧的 jquery 但不适用于较新的 jquery...
工作示例:
<html>
<head>
<script src="http://layout.jquery-dev.net/lib/js/jquery-1.4.2.js"></script>
<script src="http://layout.jquery-dev.net//lib/js/jquery-ui-1.7.2.js"></script>
<script src="http://layout.jquery-dev.net//lib/js/jquery.layout-1.2.0.js"></script>
<script type="text/javascript">
var myLayout;
$(document).ready(function () {
myLayout = $('body').layout({applyDefaultStyles: true });
});
</script>
</head>
<body>
<div class="ui-layout-west">west</div>
<div class="ui-layout-center">center</div>
</body>
</html>Run Code Online (Sandbox Code Playgroud)
不工作的例子 - 较新的 jQuery
<html>
<head>
<script src="https://code.jquery.com/jquery-3.3.1.js"></script>
<script
src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"
integrity="sha256-T0Vest3yCU7pafRw9r+settMBX6JkKN06dqBnpQ8d30="
crossorigin="anonymous"></script>
<script src="https://layout.jquery-dev.net//lib/js/jquery.layout-1.2.0.js"></script>
<script type="text/javascript">
var myLayout;
$(document).ready(function () {
myLayout = $('body').layout({applyDefaultStyles: true });
});
</script>
</head>
<body>
<div class="ui-layout-west">west</div>
<div class="ui-layout-center">center</div>
</body>
</html>Run Code Online (Sandbox Code Playgroud)
这是 jQuery 中的重大变化还是 jQuery UI 布局中的问题?
这可能已经回答了,但我无法在任何地方找到已回答的问题......
假设我们有以下HTML ...
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Dropdown Test</title>
</head>
<body>
<select name="myDropDownListName" id="myDropDownListID" class="dropdown">
<option selected="selected" value="0">Please select a value...</option>
<option value="1">My Custom Value 1</option>
<option value="2">My Custom Value 2</option>
<option value="3">My Custom Value 3</option>
</select>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
如果我不知道索引的"值"值,那么JQuery命令将"我的自定义值2"设置为下拉列表框中当前选择的选项是什么样的,并且只能通过文本"我的"识别项目自定义价值2'?
我正在使用 Ubuntu 18.04、mongodb 4.0.3 社区和 mongodb-compass 1.15.4 - 试图让两个 mongodb-compass 实例并排运行。当我双击我的启动器图标时,它会打开 mongodb-compass 的第一个实例。当我第二次双击我的启动器时,它会将焦点设置在 mongodb-compass 的当前运行实例上,但不会打开第二个实例。
我尝试使用命令行调用,并且再次将焦点设置为当前正在运行的实例。
如何启动另一个 mongodb-compass 实例与第一个实例并行运行?
假设我有一个包含 3 列的表——“Column1”、“Column2”和“Column3”——所有 3 列的数据类型都是 varchar(100)。
使用 PowerShell,如何连接到 SQL Server 并使用 SqlDataReader 和 ForEach 运算符查看“Column2”的内容?
javascript ×2
jquery ×2
mongodb ×2
sql-server ×2
c# ×1
file ×1
foreach ×1
html ×1
log4net ×1
namespaces ×1
permissions ×1
powershell ×1
reflection ×1
soap ×1
typescript ×1
xml ×1