小编Run*_*une的帖子

我可以从SqlConnection对象获取对待处理事务的引用吗?

假设某人(除了我)编写以下代码并将其编译为程序集:

using (SqlConnection conn = new SqlConnection(connString)) 
{
    conn.Open();
    using (var transaction = conn.BeginTransaction())
    {
        /* Update something in the database */
        /* Then call any registered OnUpdate handlers */
        InvokeOnUpdate(conn);

        transaction.Commit();
    }
}
Run Code Online (Sandbox Code Playgroud)

对InvokeOnUpdate(IDbConnection conn)的调用调用了一个我可以实现并注册的事件处理程序.因此,在这个处理程序中,我将引用IDbConnection对象,但我不会引用挂起的事务.我有什么办法可以控制交易吗?在我的OnUpdate处理程序中,我想执行类似于以下内容的操作:

private void MyOnUpdateHandler(IDbConnection conn) 
{
    var cmd = conn.CreateCommand();
    cmd.CommandText = someSQLString;
    cmd.CommandType = CommandType.Text;

    cmd.ExecuteNonQuery();
}
Run Code Online (Sandbox Code Playgroud)

但是,对cmd.ExecuteNonQuery()的调用会抛出InvalidOperationException,抱怨它

"当分配给命令的连接处于挂起的本地事务中时,ExecuteNonQuery要求命令具有事务.该命令的Transaction属性尚未初始化".

我可以以任何方式使用挂起的事务登记我的SqlCommand cmd吗?我可以从IDbConnection对象中检索对待处理事务的引用(如果需要,我很乐意使用反射)?

.net c# sql-server ado.net transactions

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

如何在安装时(或在编译时轻松)配置Windows服务的名称?

我在C#中创建了一个Windows服务,将它安装在服务器上运行正常.

现在我想再次安装相同的服务,但是从不同的工作目录运行,具有不同的配置文件等.因此,我希望同时运行同一服务的两个(或更多)实例.最初,这是不可能的,因为安装程序会抱怨已经安装了给定名称的服务.

我可以通过更改我的代码,将ServiceBase.ServiceName属性设置为新值,然后重新编译并再次运行InstallUtil.exe来解决此问题.但是,我更喜欢我是否可以在安装时设置服务名称,即理想情况下我会做类似的事情

InstallUtil.exe/i/servicename ="MyService Instance 2"MyService.exe

如果这是不可实现的(我非常怀疑),我希望能够在构建服务时注入服务名称.我认为有可能使用某种构建事件,使用聪明的msbuild或nant技巧或类似的东西,但我没有线索.

任何建议将不胜感激.

感谢您的时间.

.net c# windows-installer windows-services

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

为什么c#编译器在带有动态参数的调用站点检查方法的"静态"?

为什么C#编译器不告诉我这段代码无效?

class Program
{
    static void Main(string[] args)
    {
        dynamic d = 1;
        MyMethod(d);
    }

    public void MyMethod(int i) 
    {
        Console.WriteLine("int");
    }
}
Run Code Online (Sandbox Code Playgroud)

调用MyMethod在运行时失败,因为我试图从静态方法调用非静态方法.这是非常合理的,但为什么编译器在编译时不认为这是一个错误?

以下内容无法编译

class Program
{
    static void Main(string[] args)
    {
        dynamic d = 1;
        MyMethod(d);
    }
}
Run Code Online (Sandbox Code Playgroud)

所以尽管动态调度,编译器会检查是否MyMethod存在.为什么不验证"静态"?

c# static dynamic c#-4.0

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

在Windows 7,64位上使用easy_install时出现问题.(找不到python.exe)

我刚刚在我的Windows 7(64位)联想t61p笔记本电脑上安装了Python 2.6.

我已经下载了Sphinx鼻子,显然已正确使用它们

python setup.py install
Run Code Online (Sandbox Code Playgroud)

(在安装过程中至少没有报告错误).

现在我正在尝试使用pymongo,easy_install但我没有取得多大成功.这似乎easy_install根本不起作用.我easy_install以管理员身份执行:

C:\>easy_install 
Cannot find Python executable C:\Program Files\Python26\python.exe
Run Code Online (Sandbox Code Playgroud)

路径C:\Program Files\Python26\python.exe 正确的.

在bugs.python.org上发现了这个bug报告似乎是相关的,虽然它的状态是'Resolved'.

你有什么想法可能是错的吗?任何有关诊断问题的指示,提示或技巧都将不胜感激.

编辑:这是我在尝试安装pymongo时收到的堆栈跟踪:

C:\Users\Rune Ibsen\Documents\Downloads\pymongo-1.4>python setup.py install
running install
running bdist_egg
running egg_info
writing pymongo.egg-info\PKG-INFO
writing top-level names to pymongo.egg-info\top_level.txt
writing dependency_links to pymongo.egg-info\dependency_links.txt
reading manifest file 'pymongo.egg-info\SOURCES.txt'
reading manifest template 'MANIFEST.in'
writing manifest file 'pymongo.egg-info\SOURCES.txt'
installing library code to build\bdist.win-amd64\egg
running …
Run Code Online (Sandbox Code Playgroud)

python easy-install mongodb windows-7

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

为什么EF 4不会为具有唯一索引的列生成FK关联关联?

我遇到过一个场景,其中Entity Framework 4.0没有生成与具有唯一索引的表支持的实体的关联,我想知道为什么.

基本设置是这样的:假设我在SQL Server 2008 R2中有两个表和一个外键关系:

CREATE TABLE [dbo].[User](
    [Id] [int] IDENTITY(1,1) NOT NULL,
    [GroupId] [int] NULL,
 CONSTRAINT [PK_User] PRIMARY KEY CLUSTERED 
(
    [Id] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF,
ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]

CREATE TABLE [dbo].[Group](
[Id] [int] IDENTITY(1,1) NOT NULL,
 CONSTRAINT [PK_Group] PRIMARY KEY CLUSTERED 
(
    [Id] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF,
    ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = …
Run Code Online (Sandbox Code Playgroud)

.net entity-framework sql-server-2008 entity-framework-4

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

内存高效的电源设置算法

尝试计算9个字母的字符串'ABCDEFGHI'的所有子集(幂集).

使用标准递归方法,我的机器在完成之前就会出现内存不足(1GB)错误.我没有更多的物理记忆.

怎么能做得更好?语言没有问题,发送到标准输出的结果也很好 - 在输出之前不需要全部保存在内存中.

language-agnostic algorithm recursion powerset

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

为什么我的.net应用程序不会发出超过10个并发WebClient请求?

我正在尝试理解Windows中C#和I/O完成端口中async/await的复杂性,编写代码以验证我的假设.

从我的理解,调用WebClient.DownloadStringTaskAsync(...)将使当前线程注册I/O操作与I/O完成端口(这可能有点模糊,我还不了解细节),它将创建一个Task<string>,它将继续执行代码.在某些时候,它将遇到await给定的任务.此时,它将从当前方法返回(好吧,它将退出某个范围,我不确定这个范围是否可能是方法以外的东西 - 我应该检查生成的状态机以了解该部分) .一旦I/O操作完成,将从线程池中获取一个线程,它将传递I/O操作的结果,并将执行刚才提到的其余范围.

我已经尝试过验证这种行为,但只有在C#代码到目前为止看起来不正确之前:

class Program
{
    static void Main(string[] args)
    {
        ThreadPool.SetMaxThreads(30, 30);
        Console.WriteLine("Connection limit is {0}", ServicePointManager.DefaultConnectionLimit);
        for (int i = 0; i < 30; i++)
        {
            FetchAsync(i);
        }

        Console.WriteLine("Done starting requests");
        Console.ReadKey();
    }

    private async static void FetchAsync(int num)
    {
        WebClient wc = new WebClient();
        string result = await wc.DownloadStringTaskAsync("http://localhost/slow/index/15");
        Console.WriteLine("Done #{0}", num);
    }
}
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,我使用a WebClient来创建30个网页请求(我知道这个请求很慢,需要15秒才能响应).运行此代码,我观察到以下行为:15秒后前10个请求完成.再过15秒后,另外10个请求完成,再过15秒后,其余请求完成.因此,似乎一次只有10个未完成的请求(使用perfmon我已经验证了被调用的Web应用程序有10个当前请求).这是为什么?我期待30个并发请求,因为我已根据上面的代码设置了线程池的最大线程数.

这个问题让我相信ServicePointManager可能与它有关,但由于DefaultConnectionLimit只有2,我认为没有联系.

我意识到这是一个相当简单的问题的冗长描述.我希望它能让人更容易指出我的假设错误的地方.

我在Windows 7,64位机器上运行它.

c# asynchronous webclient threadpool async-await

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

如何使用Java中的X.509证书签署HTTP请求?

如何使用Java执行HTTP请求并使用X.509证书对其进行签名?

我通常用C#编程.现在,我想要做的是类似于以下内容,仅在Java中:

 private HttpWebRequest CreateRequest(Uri uri, X509Certificate2 cert) 
 {
     HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(uri);
     request.ClientCertificates.Add(cert);
     /* ... */
     return request;
 }
Run Code Online (Sandbox Code Playgroud)

在Java中我创建了一个java.security.cert.X509Certificate实例,但我无法弄清楚如何将它与HTTP请求相关联.我可以使用java.net.URL实例创建HTTP请求,但我似乎无法将我的证书与该实例关联(我不确定使用java.net.URL是否合适).

java https http client-certificates x509certificate

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

在使用ASP.NET 4.5发布配置文件时,如何参数化部署?

ASP.NET 4.5中的新pubxml文件肯定是朝着正确方向迈出的一步.我也喜欢msdeployparameters.xml文件的支持(即使它们有时不像我想的那么强大).现在,我如何组合msdeploy参数和pubxml文件?我希望pubxml文件允许我提供类似的设置

<ParametersFile>productionParameters.xml</ParametersFile>

或者在我的production.pubxml文件中类似的东西,包含web.config在发布到生产环境时要合并的值.这是可能的还是我必须回到我自己的方式来确定参数文件并msdeploy使用-setParamFile ="productionParameters.xml"进行调用?

msdeploy webdeploy asp.net-4.5

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

用于生成javascript的.NET库?

你知道用于生成javascript代码的.NET库吗?

我想根据.NET应用程序中的信息生成javascript代码.我希望能够创建一个类似AST的数据结构(使用C#)并将其转换为有效的javascript.我需要能够创建函数,语句,表达式等,所以我需要的不仅仅是JSON序列化程序 - 但我想你可以把它想象成一个(非常)通用的JSON序列化程序.

这样的库是否存在,如果存在,您能推荐吗?

谢谢.

.net javascript code-generation

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