小编Rya*_*yan的帖子

sp执行时阻止读取行

我有很多.NET进程从SQL Server 2008数据库表读取消息并一次处理一个.我实现了一个简单的SP来"锁定"任何一个进程正在读取的行,以避免任何两个进程处理同一行.

BEGIN TRAN

SELECT @status = status FROM t WHERE t.id = @id
IF @status = 'L'
BEGIN
    -- Already locked by another process. Skip this
    RETURN 0
END
ELSE
    UPDATE t SET status = 'L' WHERE id = @id
    RETURN 1
END

COMMIT
Run Code Online (Sandbox Code Playgroud)

然而,这是有缺陷的:有时一行被"锁定"并处理两次.我怀疑存在并发问题:两个进程在更新之前读取状态.

我认为这可以通过某种方式实现一个读取块来解决(即使事务块读取),但我不确定如何做到这一点.有人可以帮忙吗?

非常感谢提前

瑞安

.net sql sql-server locking transactions

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

如何在仪表板中使用报告快照

我有一个Dynamics 2011仪表板,其中包含通过iFrame链接和SSRS报告.它工作得很好,但我正在查看的报告刷新很慢.我想安排报告并让仪表板自动指向最新的快照.

有没有办法做到这一点?

提前致谢

瑞安

dashboard reporting-services dynamics-crm-2011

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

Linq表达式将DataTable转换为<Key,List <Values >>的字典

我正在尝试转换表单的DataTable

Key  Value
1    A
1    B
1    C
2    X
2    Y
Run Code Online (Sandbox Code Playgroud)

到字典

1 [A,B,C]
2 [X,Y]
Run Code Online (Sandbox Code Playgroud)

我正在使用的lambda表达式是

GetTable("..sql..").AsEnumerable().
    .Select(r => new {Key = r.Field<int>("Key"), Val = r.Field<string>("Value")})
    .GroupBy(g => g.Key)
    .ToDictionary(a => a.Key, a => String.Join(",", a.Value))
Run Code Online (Sandbox Code Playgroud)

但它失败了"无法将lambda表达式转换为'System.Collections.Generic.IEqualityComparer',因为它不是委托类型"

我怎么能做到这一点?

c# linq

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

不在办公室的回复会发送到"来自"地址,"不回复"

我使用通用电子邮件地址向三个不同位置的客户发送电子邮件.任何错误/不在办公室的回复都应该送到当地办事处供他们处理.所以我使用:

来自:common@abc.com回复:london@abc.com

来自:common@abc.com回复:newyork@abc.com

来自:common@abc.com回复:tokyo@abc.com

这似乎适用于电子邮件失败(错误的地址等),但Exchange的外出回复总是转到发件人地址common@abc.com.我需要他们去当地的办公室,回复地址.

知道如何解决这个问题吗?我使用标准MailMessage从c#发送电子邮件:

MailMessage mail = new 
mail.Subject = mailDetail["subject"].ToString();
mail.Body = mailDetail["body"].ToString();

// From 
mail.From = new MailAddress(ConfigManager.GetSetting("MailSender"));

// Reply to (boucebacks / out of office etc)
mail.ReplyTo = new MailAddress(mailDetail["reply_to"].ToString());
mail.DeliveryNotificationOptions = DeliveryNotificationOptions.OnFailure;
Run Code Online (Sandbox Code Playgroud)

谢谢你的帮助,

瑞安

c# email exchange-server smtp

4
推荐指数
2
解决办法
6627
查看次数

为什么Log4Net过滤器接收评估器阈值之外的消息?

我的log4net配置是这样的:

    <appender name="SmtpAppender" type="log4net.Appender.SmtpAppender">
      <to value="xxx" />
      <from value="xxx" />
      ...
      <evaluator type="log4net.Core.LevelEvaluator">
        <threshold value="ERROR"/>
      </evaluator>
      <filter type="MyApp.Logging.EmailLogThrottler">
      </filter>
    </appender>
Run Code Online (Sandbox Code Playgroud)

如果我在我的MyApp.Logging.EmailLogThrottler班级中设置断点,我看到它正在接收要过滤的INFO消息.EmailLogThrottler相当昂贵,因此我只希望它根据评估者阈值接收ERROR消息.这可能吗?

次要问题 - 似乎首先应用过滤器然后应用评估器阈值(这对我来说是反直觉的).这个假设是否正确?

.net log4net log4net-filter

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

SelectSingleNode返回null - 即使是命名空间

我知道之前已经以类似的方式询问过这个问题,但我似乎无法让这个问题起作用.

我有一些xml:

<?xml version="1.0" encoding="ISO-8859-1" ?> 
    <Research xmlns="http://www.rixml.org/2005/3/RIXML" xmlns:xalan="http://xml.apache.org/xalan" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" createDateTime="2011-03-29T15:41:48Z" language="eng" researchID="MusiJvs3008">
    <Product productID="MusiJvs3008">
    <StatusInfo currentStatusIndicator="Yes" statusDateTime="2011-03-29T15:41:48Z" statusType="Published" />
    <Source>
    <Organization type="SellSideFirm" primaryIndicator="Yes">
    <OrganizationID idType="Reuters">9999</OrganizationID> 
Run Code Online (Sandbox Code Playgroud)

我正在尝试使用xpath读取值:

XPathDocument xmldoc = new XPathDocument(xmlFile); 
XPathNavigator nav = xmldoc.CreateNavigator(); 
XmlNamespaceManager nsMgr = new XmlNamespaceManager(nav.NameTable);
nsMgr.AddNamespace(string.Empty, "http://www.rixml.org/2005/3/RIXML"); 
XPathNavigator result = nav.SelectSingleNode("/Research", nsMgr); // <-- Returns null!
Run Code Online (Sandbox Code Playgroud)

但即使是简单的根节点选择也会返回null!我确信我的命名空间有问题.有人可以帮忙吗?

理想情况下,我想要简单的线条,让我从xml文件中选择值,即

String a = xmlDoc.SelectSingleNode(@"/Research/Product/Content/Title").Value;
Run Code Online (Sandbox Code Playgroud)

顺便说一句,我没有(直接)控制XML文件内容.

.net c# xml namespaces searching-xml

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

通过API将参数传递给CRM 2011 Workflow

我的工作流程有"提示和响应"对话框.我可以使用API​​运行工作流程ExecuteWorkflowRequest但是如何为提示和响应输入提供值?

workflow crm dynamics-crm dynamics-crm-2011

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

使用c#表达式定义服务器标记属性值

是否可以从ac#表达式设置服务器标签的属性,即类似

<asp:TextBox Width='<%= [some c# expression] %>'/> 
Run Code Online (Sandbox Code Playgroud)

?

我虽然这很简单,但我无法运行这样的表达式.

谢谢你的帮助

瑞安

c# asp.net web-controls

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

"使用"块线程是否安全?

如果我从多个线程调用一些数据访问方法,我是否需要锁定数据库调用周围的代码以确保一致性,或者使用下面的使用语句是原子的吗?

public static DataRow GetData(Int32 id)
{
    using (SqlConnection con = new SqlConnection(connectionString);)         
    {
        con.Open();
        SqlCommand cmd = ...
        cmd.CommandType = CommandType.StoredProcedure;
        cmd.Parameters.Add(...)
        cmd.Parameters.Add(...)
        DataTable dt = new DataTable();
        return new SqlDataAdapter(cmd).FillWithRetry(dt, sqlGetEmail.CommandText);
    }
}
Run Code Online (Sandbox Code Playgroud)

我不认为一个线程可以影响定义的连接对象和另一个的"使用中".

c# concurrency multithreading thread-safety

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

当控件在屏幕上时,为什么ASP.NET Repeater.Items集合为空?

我有一个带有以下中继器的ASP页面:

<asp:Repeater runat="server" ID="RegionRepeater"
    DataSourceID="SqlDataSourceRegions" EnableViewState="true">
    <ItemTemplate>
        <tr>
            <td valign="top">
                <b><%#Eval("description")%></b>
                <asp:HiddenField runat="server" ID="RegionID"
                    Value='<%#Eval("region_id")%>'/>
            </td>
            <td>
                <asp:FileUpload ID="FileUpload" runat="server" Width="368px" />
            </td>
        </tr>
    </ItemTemplate>
</asp:Repeater>
Run Code Online (Sandbox Code Playgroud)

(转发器位于向导内部,位于内容窗格内).

后面的代码连接到

protected void Wizard1_NextButtonClick(object sender, WizardNavigationEventArgs e)
Run Code Online (Sandbox Code Playgroud)

事件.屏幕上有两个项目(表格内有两行).但是,当代码尝试读取这些项时,Items集合为空!

foreach(RepeaterItem region in RegionRepeater.Items)
{
    // Never runs - the RegionRepeater.Items.Count = 0
    FileUpload fileUpload = (FileUpload) region.FindControl("FileUpload");
    String regionID = ((HiddenField)region.FindControl("RegionID")).Value;
    ...
Run Code Online (Sandbox Code Playgroud)

当屏幕上绘制了控件时,为什么集合为空?

非常感谢任何帮助; 这开始让我疯狂.

(顺便说一下:我尝试添加/删除EnableViewState ="true"标签)

asp.net repeater

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

获取表示c#中int的位数组

有没有办法在c#中显示int的表示形式?

即

1  = 00001
20 = 10100
Run Code Online (Sandbox Code Playgroud)

等等

我尝试过使用BitConverter没有运气.这应该很简单,但我找不到解决方案!

c# bit-manipulation bit

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