假设某人(除了我)编写以下代码并将其编译为程序集:
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对象中检索对待处理事务的引用(如果需要,我很乐意使用反射)?
我在C#中创建了一个Windows服务,将它安装在服务器上运行正常.
现在我想再次安装相同的服务,但是从不同的工作目录运行,具有不同的配置文件等.因此,我希望同时运行同一服务的两个(或更多)实例.最初,这是不可能的,因为安装程序会抱怨已经安装了给定名称的服务.
我可以通过更改我的代码,将ServiceBase.ServiceName属性设置为新值,然后重新编译并再次运行InstallUtil.exe来解决此问题.但是,我更喜欢我是否可以在安装时设置服务名称,即理想情况下我会做类似的事情
InstallUtil.exe/i/servicename ="MyService Instance 2"MyService.exe
如果这是不可实现的(我非常怀疑),我希望能够在构建服务时注入服务名称.我认为有可能使用某种构建事件,使用聪明的msbuild或nant技巧或类似的东西,但我没有线索.
任何建议将不胜感激.
感谢您的时间.
为什么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存在.为什么不验证"静态"?
我刚刚在我的Windows 7(64位)联想t61p笔记本电脑上安装了Python 2.6.
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) 我遇到过一个场景,其中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) 尝试计算9个字母的字符串'ABCDEFGHI'的所有子集(幂集).
使用标准递归方法,我的机器在完成之前就会出现内存不足(1GB)错误.我没有更多的物理记忆.
怎么能做得更好?语言没有问题,发送到标准输出的结果也很好 - 在输出之前不需要全部保存在内存中.
我正在尝试理解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位机器上运行它.
如何使用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是否合适).
ASP.NET 4.5中的新pubxml文件肯定是朝着正确方向迈出的一步.我也喜欢msdeploy对parameters.xml文件的支持(即使它们有时不像我想的那么强大).现在,我如何组合msdeploy参数和pubxml文件?我希望pubxml文件允许我提供类似的设置
<ParametersFile>productionParameters.xml</ParametersFile>
或者在我的production.pubxml文件中类似的东西,包含web.config在发布到生产环境时要合并的值.这是可能的还是我必须回到我自己的方式来确定参数文件并msdeploy使用-setParamFile ="productionParameters.xml"进行调用?
你知道用于生成javascript代码的.NET库吗?
我想根据.NET应用程序中的信息生成javascript代码.我希望能够创建一个类似AST的数据结构(使用C#)并将其转换为有效的javascript.我需要能够创建函数,语句,表达式等,所以我需要的不仅仅是JSON序列化程序 - 但我想你可以把它想象成一个(非常)通用的JSON序列化程序.
这样的库是否存在,如果存在,您能推荐吗?
谢谢.
.net ×4
c# ×4
ado.net ×1
algorithm ×1
asp.net-4.5 ×1
async-await ×1
asynchronous ×1
c#-4.0 ×1
dynamic ×1
easy-install ×1
http ×1
https ×1
java ×1
javascript ×1
mongodb ×1
msdeploy ×1
powerset ×1
python ×1
recursion ×1
sql-server ×1
static ×1
threadpool ×1
transactions ×1
webclient ×1
webdeploy ×1
windows-7 ×1