小编CJM*_*CJM的帖子

NLog配置API:使用存储在变量中的布局

我的应用程序为应用程序本身创建了一个日志,因此记录它何时被激活,以及在应用程序级别发生了什么.

应用程序以"配置文件"为中心 - 用户加载一个配置文件,告诉应用程序在何处/何时/什么/如何.所以我还想为每个配置文件创建一个日志,以便在每次运行配置文件时记录进度.

到目前为止没有问题...除了我希望配置文件日志与配置文件本身一起存储,所以这意味着我需要动态配置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是否可以工作.

.net configuration logging nlog

3
推荐指数
1
解决办法
2837
查看次数

从存储过程中调用存储过程并返回记录集

我有一个存储过程,可以回滚一系列操作.我想从另一个SP中调用它.

问题是内部SP返回一个记录集,其中包含一个指示成功程度的值.

这种方法效果很好,并且在我们的上下文中有一些优点,但回想起来,我会用传统的方式使用Return值或Output参数.

我总是可以改变这个SP来使用这种方法并修改调用代码,但是a)我不想涉及任何比我更多的代码,并且b)在知识层面,我很想知道什么可能存在替代解决方案,如果有的话.

如何(如果有的话)我可以调用此SP并确定返回的单例记录集的值?

谢谢

t-sql sql-server

2
推荐指数
1
解决办法
1720
查看次数

标题(在ASP.NET @ Page指令中)不在网页中呈现

我打算在@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的标签存在于源代码.

我已经有了一个解决方法,但它让我感到烦恼,所以我决心找到一个解决方案!

html asp.net validation

2
推荐指数
1
解决办法
2524
查看次数

通过屏幕尺寸更改边距的方法

如何设置CSS边距:

.url {
    margin: 10px 0 0;
}
Run Code Online (Sandbox Code Playgroud)

屏幕调整大小时?从margin: 10px 0 0;margin: 20px 0;

css

2
推荐指数
2
解决办法
1万
查看次数

解析XML文件-options?

我正在开发一个系统,通过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要容易得多.好吧,学习曲线陡峭,但值得. …

c# xml serialization parsing xml-serialization

1
推荐指数
1
解决办法
835
查看次数

在文本列中存储数字数据时出现问题 - SELECT ... BETWEEN

几年前,我在一个数字主键存储在[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:感谢所有回复.我不确定我是否感到失望,没有一个明显的,复杂的解决方案,但我相应很高兴看起来我没有错过任何明显的错误!

我想我还是更喜欢自己的解决方案; 它很简单而且有效 - 我有什么理由不使用它吗?我无法相信其他解决方案提供的效率要低得多.

我意识到在理想世界中,这个问题不会存在; 但不幸的是,我不是在一个理想的世界里工作,而且往往是一个充分利用糟糕情况的案例.

sql performance

0
推荐指数
1
解决办法
520
查看次数

查询以获取下一个身份?

查询以获取下一个身份?对于没有删除记录的表,这是可能的:

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 t-sql identity-column sql-server-2008-r2

0
推荐指数
1
解决办法
2万
查看次数