我正在编写一个.NET应用程序,从头开始实现数据层的想法对我来说很蠢.(数据层我指的是与数据库对话的代码,而不是将数据库访问抽象为域对象的层[有时称为数据访问层,可与数据层互换使用].)
我想找到一个现有的通用数据层实现,它提供标准的crud功能,错误处理,连接管理 - 工作.我将只与SQL Server交谈.
如果库是在C#或VB.NET中,对我来说并不重要,我不在乎它是LINQ还是ADO.NET.只要它有效.
**我想强调一点,我不是在寻找数据访问技术或机制(例如LINQ,ORM工具等),而是寻找现有的库.)
node.js可以用作运行服务器端Javascript的通用框架,专门用于Web应用程序,完全与它的非阻塞和异步路由I/O功能无关吗?具体来说,我想知道我是否可以在(web)服务器上运行任意Javascript而不使用其他node.js功能.
对于Polly,我想将我的策略定义和该策略的执行分为两个不同的语句,如:
// Policy definition
var policy = Policy
.HandleResult<IRestResponse>(predicate)
.Retry(2);
// Policy execution
policy.ExecuteAndCapture(() =>
{
DoSomethingAndReturnAnIRestResponse();
};
Run Code Online (Sandbox Code Playgroud)
我想这样做,所以我可以更好地重用我的重试策略,例如用于依赖注入.
我试图了解在以这种方式拆分策略和执行时是否有任何考虑因素,例如,如果存在任何可能未policy从策略定义执行到执行的"状态"(缺少更好的术语).
沿着这些思路,我注意到当我ExecuteAndCapture()以上述方式使用Polly时,某些属性(与捕获最终异常/结果相关ExecuteAndCapture()的policy属性)没有显示在对象上.根据文档(此处和此处),完成以下政策后:
var policy = Policy
.HandleResult<IRestResponse>(predicate)
.Retry(2)
.ExecuteAndCapture(() =>
{
DoSomethingAndReturnAnIRestResponse();
});
Run Code Online (Sandbox Code Playgroud)
......你应该回来:
PolicyResult.Outcome
PolicyResult.FinalException
PolicyResult.ExceptionType
PolicyResult.Result
Run Code Online (Sandbox Code Playgroud)
这确实正在发生,然后ExecuteAndCapture()与政策定义在同一声明中.但是,在将策略定义与执行分离时,这些属性不可用.我天真地认为他们会出现在现有policy物体上,但他们没有:
看来我需要创建一个新的变量赋值才能访问这些属性:
有什么顾虑吗?
我在 Azure 应用服务上运行网站和 webjobs,我想启用 NLog 内部调试来解决一些日志记录问题。在我的 NLog 配置代码中,我这样做:
InternalLogger.LogLevel = LogLevel.Trace;
InternalLogger.LogFile = "nlog.txt";
Run Code Online (Sandbox Code Playgroud)
在开发过程中本地运行时,nlog.txt显示在应用程序二进制目录 ( bin) 中。在 Azure 上它不显示。假设可能是文件系统权限问题,我将代码更改为:
InternalLogger.LogLevel = LogLevel.Trace;
InternalLogger.LogFile = @"d:\logfiles\nlog.txt";
Run Code Online (Sandbox Code Playgroud)
Azure 应用服务保证d:\logfiles\目录可写。然而还是没有nlog.txt文件。
想法?
使用我的Azure网站上的“连续交付”刀片:
我在VSTS中设置了构建和发布定义。
源代码控制正确触发了构建,然后在此之后运行发行版。一切都很好。
我不了解Build和Release定义是如何连接的。我看不到任何一个指向另一个的属性。它们如何链接?
第2部分让我感到困惑的是,当我查看Build定义中的Tasks时
没有Deploy任务-这对我来说确实有意义,因为该Deploy任务显示在Release定义中(似乎合乎逻辑):
但是,我看到在Build定义方面,我也可以直接添加Deploy任务。
将Deploy任务作为Build定义的一部分而不是Release定义的一部分是什么意思?
continuous-integration azure continuous-deployment azure-devops
我正在使用这个扩展NLog的https://github.com/NLog/NLog/tree/master/examples/ExtendingLoggers/LoggerWrapper方法,以便我可以为我的事件添加自定义属性.所以我的代码看起来像这样:
public void WriteMessage(string eventID, string message)
{
LogEventInfo logEvent = new LogEventInfo(LogLevel.Info, _logger.Name, message);
logEvent.Properties["EventID"] = eventID;
_logger.Log(typeof(MyLogger), logEvent);
}
Run Code Online (Sandbox Code Playgroud)
在WriteMessage方法中,我尝试获取调用者类和方法名称,如下所示:
logEvent.CallerClassName;
logEvent.CallerMemberName;
Run Code Online (Sandbox Code Playgroud)
但两者都返回null.
我怎样才能获得价值?
假设我的查询结果如下:
ID NAME Phone
---- ---- -----
1 Bob 111-111-1111
1 Bob 222-222-2222
1 Bob 333-333-3333
2 Stan 555-555-5555
3 Mike 888-888-8888
3 Mike 777-777-7777
Run Code Online (Sandbox Code Playgroud)
我想只返回每个ID值的单行实例.对我来说无关紧要的是我得到的多行中的哪一行 - 集合中的第一行是好的.
所以可能的结果是:
ID NAME Phone
---- ---- -----
1 Bob 111-111-1111
2 Stan 555-555-5555
3 Mike 888-888-8888
Run Code Online (Sandbox Code Playgroud) 我有一个 ASP.NET Web API 2 操作方法:
[System.Web.Http.HttpPost]
public HttpResponseMessage Create(HttpRequestMessage req)
{
//...
if (success)
return Request.CreateResponse(HttpStatusCode.Created);
return CreateErrorResponse(HttpStatusCode.BadRequest, "you done bad");
}
Run Code Online (Sandbox Code Playgroud)
直到我做了“某事”,一旦出错,它就会返回 http 400,并带有自定义错误文本“you did bad”。这就是预期的结果。
它不再返回自定义文本;它只是返回标准的“错误请求”。一直在试图了解是什么改变导致了这种情况的发生。
所以我尝试:
var response = new { message = "you done bad" };
return Request.CreateResponse(HttpStatusCode.BadRequest, response);
Run Code Online (Sandbox Code Playgroud)
相同的结果。
然后我创建了一个新的、干净的 Web API 项目,并得到了我期望的结果。
我是如何破坏我的项目的?
如果Apple不希望开发人员在iPhone SDK中使用私有API,为什么他们不会使用与C#的"内部"关键字相当的Objective-C来标记类和/或方法?如果API分布在多个二进制文件中,Apple可以将它们重构为专用的私有API二进制文件,以使它们更容易.
c# ×4
.net ×3
azure ×2
logging ×2
nlog ×2
asp.net ×1
asp.net-mvc ×1
azure-devops ×1
data-access ×1
iphone ×1
ipod-touch ×1
javascript ×1
ms-access ×1
node.js ×1
polly ×1
sql ×1
sql-server ×1