我有一些像这样的代码:
EventLog.CreateEventSource("myApp", "myAppLog");
EventLog.WriteEntry("myApp", "Test log message", EventLogEntryType.Error);
Run Code Online (Sandbox Code Playgroud)
现在,除非我遗漏了读取MSDN的内容,否则这会导致在事件查看器中创建新的日志"myAppLog",并且应该将一个条目添加到源名为"myApp"的新日志中.但是,我无法创建新日志.这总是只是将错误日志消息写入应用程序日志,源"myApp" - "myAppLog"无处可见.我究竟做错了什么?我以管理员身份登录.
我正在开发一个在最新版本的Firefox/SeaMonkey/Chrome中显示OK的网站,但有趣的是在IE11中存在渲染问题:http:
//devel.gooeysoftware.com/mozaddons/switching.php
如果你在IE11中加载它,左边的"从Firefox切换到SeaMonkey"菜单项不会将其文本换行到包含DIV的大小,而是溢出.我不明白为什么会这样.它只是IE11中的一个错误,还是我错过了一些CSS来包装它?
更新:
看起来他们在Edge中修复了一堆IE11 flexbox渲染错误.
最近我注意到.configVisual Studio 创建了一个目录,其中有一个dotnet-tools.json文件。这应该是.gitignored 还是签入源代码管理?
在github上,当我查看提交时,它会向我显示提交消息和更改,以及底部的任何注释.但是,它没有告诉我签入提交的分支.即使我'浏览代码',它正在浏览特定"树"的代码(可能是提交时的代码状态),而不是特定的分支.
我知道的git,承诺没有内在联系的一个分支,但他们肯定是总是会首先被提交到一个特定的分支?是不是用该分支标记了提交,我可以以某种方式查看它是哪个分支?
Microsoft SQL Server似乎在定义存储过程时检查列名有效性,但不检查表名有效性.如果它检测到当前存在引用的表名,则它会根据该表中的列验证语句中的列名.因此,例如,这将运行正常:
CREATE PROCEDURE [dbo].[MyProcedure]
AS
BEGIN
SELECT
Col1, Col2, Col3
FROM
NonExistentTable
END
GO
Run Code Online (Sandbox Code Playgroud)
......就像这样:
CREATE PROCEDURE [dbo].[MyProcedure]
AS
BEGIN
SELECT
ExistentCol1, ExistentCol2, ExistentCol3
FROM
ExistentTable
END
GO
Run Code Online (Sandbox Code Playgroud)
...但是由于"列名无效"而失败:
CREATE PROCEDURE [dbo].[MyProcedure]
AS
BEGIN
SELECT
NonExistentCol1, NonExistentCol2, NonExistentCol3
FROM
ExistentTable
END
GO
Run Code Online (Sandbox Code Playgroud)
为什么SQL Server检查列而不是表?肯定是不一致的; 它应该做两件事,或两者都不做.我们能够定义可能引用模式中不存在的表和/或列的SP是有用的,那么有没有办法关闭SQL Server检查当前存在的表中的列存在?
我正在为我的 ASP.NET Core Web API 添加一些单元测试,我想知道是直接还是通过 HTTP 客户端对控制器进行单元测试。直接看起来大概是这样的:
[TestMethod]
public async Task GetGroups_Succeeds()
{
var controller = new GroupsController(
_groupsLoggerMock.Object,
_uowRunnerMock.Object,
_repoFactoryMock.Object
);
var groups = await controller.GetGroups();
Assert.IsNotNull(groups);
}
Run Code Online (Sandbox Code Playgroud)
... 而通过 HTTP 客户端大致如下所示:
[TestMethod]
public void GetGroups_Succeeds()
{
HttpClient.Execute();
dynamic obj = JsonConvert.DeserializeObject<dynamic>(HttpClient.ResponseContent);
Assert.AreEqual(200, HttpClient.ResponseStatusCode);
Assert.AreEqual("OK", HttpClient.ResponseStatusMsg);
string groupid = obj[0].id;
string name = obj[0].name;
string usercount = obj[0].userCount;
string participantsjson = obj[0].participantsJson;
Assert.IsNotNull(name);
Assert.IsNotNull(usercount);
Assert.IsNotNull(participantsjson);
}
Run Code Online (Sandbox Code Playgroud)
在线搜索,看起来似乎使用了两种测试 API 的方式,但我想知道最佳实践是什么。第二种方法似乎更好一些,因为它在不知道实际响应对象类型的情况下天真地测试来自 Web API 的实际 JSON 响应,但是以这种方式注入模拟存储库更加困难 - 测试必须连接到单独的本地 Web API服务器本身以某种方式配置为使用模拟对象......我想?
有时候,我会删除我的开发数据库并运行我的EF代码优先应用程序.我会得到错误:
无法打开登录请求的数据库"AssessmentSystem".登录失败.用户'AssessmentAdmin'登录失败.
我认为这是因为DbContext只有第一次使用上下文时才会运行数据库初始化逻辑"每个AppDomain一次",如本页所述.这意味着我需要回收IIS应用程序池,以便在我删除它时让EF重新创建我的数据库.
有没有什么办法可以让我每次尝试访问数据库时都能运行数据库初始化代码?因此,它将始终检查数据库是否存在,如果不存在,则创建它而不是尝试打开它,即使它使用的是先前访问过我现在已删除的数据库的相同AppDomain?
请注意,我希望对每个查询进行初始化检查,因此即使完成它Application_Start也不够经常; 理想情况下,我希望能够加载一些数据库数据,删除数据库,然后加载一些数据库数据,它将重新创建数据库,而我甚至不必重新启动应用程序(基本上我只需要重新加载网页,加载一些DB数据).
我通常不会在这里问这样的问题,但不幸的是,虽然AutoMapper似乎是一个很好的映射库,但它的文档非常糟糕 - 没有关于库方法的XML文档,以及我能找到的最官方的在线文档是这样,非常活跃.如果有人有更好的文档,请告诉我.
那就是说,这就是问题:为什么要使用Mapper.Initialize?它似乎没有必要,因为你可以Mapper.CreateMap立即使用,因为没有文档我不知道Initialize该做什么.
.NET Framework定义了一种System.IO.Path.GetTempFileName方法,可以保证它生成的临时文件名是唯一的.据我所知,虽然极不可能,但这个文件名可能与同一路径上的目录名相同,这意味着我不能假设通过获取该文件的名称,删除它,并创建一个在同名目录中,我将拥有一个具有唯一名称的目录到任何其他目录.更重要的是,我无法指定GetTempFileName应该在其下创建临时文件的路径.似乎没有与GetTempFileName目录相同的功能.
是否有GetTempFileName创建唯一目录的等价物?如果没有,在指定位置创建唯一目录的最佳方法是什么(即.我指定创建唯一目录的路径)?
根据我的研究,看起来Javascript的正则表达式没有任何内置等效于Perl的/ x修饰符,或.NET的RegexOptions.IgnorePatternWhitespace修饰符.这些非常有用,因为它们可以使复杂的正则表达式更容易阅读.首先,我错过了什么,是否有一个内置的Javascript相当于这些?其次,如果没有,有没有人知道一个好的jQuery插件将实现这个功能?由于Javascript明显的正则表达式限制,必须将复杂的正则表达式压缩成一行是一种遗憾.
c# ×5
.net ×3
ado.net ×1
automapper ×1
css ×1
directory ×1
dotnet-tool ×1
file ×1
flexbox ×1
git ×1
github ×1
javascript ×1
logging ×1
regex ×1
sql ×1
sql-server ×1
t-sql ×1
unit-testing ×1
whitespace ×1