我的应用程序为应用程序本身创建了一个日志,因此记录它何时被激活,以及在应用程序级别发生了什么.
应用程序以"配置文件"为中心 - 用户加载一个配置文件,告诉应用程序在何处/何时/什么/如何.所以我还想为每个配置文件创建一个日志,以便在每次运行配置文件时记录进度.
到目前为止没有问题...除了我希望配置文件日志与配置文件本身一起存储,所以这意味着我需要动态配置NLog,所以我可以在运行时告诉它fileTarget路径.
但是,我还想将我想要使用的标准布局存储为NLog.config中的变量; 这似乎是我所读过的常用方法.
但是,在以下行
fileTarget.Layout = "${myLayout}"
Run Code Online (Sandbox Code Playgroud)
...我得到一个ArgumentException:
LayoutRenderer cannot be found: 'myLayout'
Run Code Online (Sandbox Code Playgroud)
目前,我的布局变量很简单:
<variable name="myLayout" value="${message}" />
Run Code Online (Sandbox Code Playgroud)
是不是您不能使用变量来通过API指定布局?如果是这样的话,我会感到惊讶.或者我在哪里出错了?
解决方案很简单 - 我可以fileTarget.Layout使用手动指定的布局填充,但是,我很想知道计划A是否可以工作.
我有一个存储过程,可以回滚一系列操作.我想从另一个SP中调用它.
问题是内部SP返回一个记录集,其中包含一个指示成功程度的值.
这种方法效果很好,并且在我们的上下文中有一些优点,但回想起来,我会用传统的方式使用Return值或Output参数.
我总是可以改变这个SP来使用这种方法并修改调用代码,但是a)我不想涉及任何比我更多的代码,并且b)在知识层面,我很想知道什么可能存在替代解决方案,如果有的话.
如何(如果有的话)我可以调用此SP并确定返回的单例记录集的值?
谢谢
我打算在@Page指令中使用Title属性来自定义每个页面标题,但它似乎没有做任何事情.
该网站使用母版页 - 我不知道这是否是一个考虑因素.
主页面摘要:
<%@ Master Language="VB" CodeFile="brightnorth.master.vb" Inherits="brightnorth" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
<link rel="stylesheet" type="text/css" href="/css/style.css" />
</head>
<body>
etc....
Run Code Online (Sandbox Code Playgroud)
Page snippet(来自http://www.brightnorth.com/about/aboutus.aspx):
<%@ Page Language="VB" MasterPageFile="~/brightnorth.master" AutoEventWireup="false" CodeFile="aboutus.aspx.vb" Inherits="about_aboutus" Title="Brightnorth.com: About Us" %>
Run Code Online (Sandbox Code Playgroud)
更重要的是,如果我通过验证器运行页面,它会抱怨......
"头"的结束标记未完成
..whereas的标签是存在于源代码.
我已经有了一个解决方法,但它让我感到烦恼,所以我决心找到一个解决方案!
如何设置CSS边距:
.url {
margin: 10px 0 0;
}
Run Code Online (Sandbox Code Playgroud)
屏幕调整大小时?从margin: 10px 0 0;到margin: 20px 0;
我正在开发一个系统,通过Exchange Web服务从电子邮件中获取XML附件,并通过我创建的自定义DAL对象将它们输入到数据库中.
我已经设法提取XML附件并将其作为流准备好......他们的问题是如何解析此流并填充DAL对象.
我可以创建一个XMLTextReader并遍历每个元素.我没有看到任何问题,除了我怀疑有一个更光滑的方式.读者似乎将开始标记,标记内容和结束标记视为不同的元素(使用reader.NodeType).我希望myValue被认为是一个元素而不是三个元素.就像我说的,我可以解决这个问题,但我确信必须有更好的方法.
我遇到了使用XML Serializer(对我来说是全新的)的想法,但快速查看表明这些无法处理ArrayLists和List(我正在使用List).
同样,我是LINQ的新手,但也提到了LINQ-to-XML,但我看到的例子似乎相当复杂 - 尽管我只是缺乏熟悉感.
基本上,我不想要一个cludged系统,但我不想使用任何复杂的技术与学习曲线,只是因为它是'酷'.
将此XML/Stream转换为DAL对象的最简单,最有效的方法是什么?
XML示例:
<?xml version="1.0" encoding="UTF-8"?>
<enquiry>
<enquiryno>100001</enquiryno>
<companyname>myco</companyname>
<typeofbusiness>dunno</typeofbusiness>
<companyregno>ABC123</companyregno>
<postcode>12345</postcode>
<contactemail>me@example.com</contactemail>
<firstname>My</firstname>
<lastname>Name</lastname>
<vehicles>
<vehicle>
<vehiclereg>54321</vehiclereg>
<vehicletype>Car</vehicletype>
<vehiclemake>Ford</vehiclemake>
<cabtype>n/a</cabtype>
<powerbhp>130</powerbhp>
<registrationdate>01/01/2003</registrationdate>
</vehicle>
</vehicles>
</enquiry>
Run Code Online (Sandbox Code Playgroud)
更新1:我正在尝试反序列化,基于格雷厄姆的例子.我想我已经为序列化设置了DAL,包括[XmlElement("whatever")]为每个属性指定.我尝试使用以下方法反序列化:
SalesEnquiry enquiry = null;
XmlSerializer serializer = new XmlSerializer(typeof(SalesEnquiry));
enquiry = (SalesEnquiry)serializer.Deserialize(stream);
Run Code Online (Sandbox Code Playgroud)
但是,我得到一个例外:' There is an error in XML document (2, 2)'.不良情绪表明{"<enquiry xmlns=''> was not expected."}
结论(更新):
我之前的问题是XML文件中的元素(查询)!=类的名称(SalesEnquiry).而不是一个[XmlElement]class属性,我们需要一个[XmlRoot]替代属性.为了完整性,如果希望在序列化期间忽略类中的[XmlIgnore]属性,则使用该属性.
我已成功序列化了我的对象,现在已成功获取传入的XML并将其反序列化为SalesEnquiry对象.
这种方法比手动解析XML要容易得多.好吧,学习曲线陡峭,但值得. …
几年前,我在一个数字主键存储在[SQL Server] varchar列中的系统上工作,所以当使用BETWEEN运算符查询时,我很快就解开了:
SELECT ID FROM MyTable WHERE ID BETWEEN 100 AND 110;
Run Code Online (Sandbox Code Playgroud)
结果:
100
102
103
109
110
11
Run Code Online (Sandbox Code Playgroud)
这简直就是糟糕的设计.但是,我正在研究第三方ERP系统,你可以想象它需要通用和灵活; 因此,我们有各种表格,其中提供字母数字字段,其中业务仅使用数字 - 因此可能发生类似的问题.
我猜这是一个很常见的问题; 我有一个简单的解决方案,但我很好奇其他人如何解决这些问题.
我的简单解决方案是:
SELECT ID FROM MyTable
WHERE ID BETWEEN iStartValue AND iEndValue
AND (LENGTH(ID) = LENGTH(iStartValue)
OR LENGTH(ID) = LENGTH(iEndValue));
Run Code Online (Sandbox Code Playgroud)
您可能会说,这是一个Oracle系统,但我通常在SQL Server中工作 - 因此可能更喜欢与数据库无关的解决方案.
编辑1:从头开始 - 我不明白为什么专业解决方案也不受欢迎.
编辑2:感谢所有回复.我不确定我是否感到失望,没有一个明显的,复杂的解决方案,但我相应很高兴看起来我没有错过任何明显的错误!
我想我还是更喜欢自己的解决方案; 它很简单而且有效 - 我有什么理由不使用它吗?我无法相信其他解决方案提供的效率要低得多.
我意识到在理想世界中,这个问题不会存在; 但不幸的是,我不是在一个理想的世界里工作,而且往往是一个充分利用糟糕情况的案例.
查询以获取下一个身份?对于没有删除记录的表,这是可能的:
SELECT TOP 1 EMPID + 1 FROM Employee ORDER BY EMPID DESC
Run Code Online (Sandbox Code Playgroud)
如果有删除的数据,我将如何获得下一个身份?例如,我有一个这样的表:
EMPID NAME
4001 someName
4002 someName
4003 ----------------------- this is deleted
4004 someName
4005 someName
4006 someName
4007 someName
4008 someName
4009 ----------------------- this is deleted
4010 ----------------------- this is deleted
Run Code Online (Sandbox Code Playgroud)
输出必须是4011
sql ×2
t-sql ×2
.net ×1
asp.net ×1
c# ×1
css ×1
html ×1
logging ×1
nlog ×1
parsing ×1
performance ×1
sql-server ×1
validation ×1
xml ×1