Multithreading 螺纹可以';当主流程可以连接时,不要使用命名管道连接;使用用户名和密码
我使用命名管道首先使用EF代码连接到数据库。它在正常的页面请求生命周期中工作正常 我正在生成一个单独的线程来发送一批电子邮件。该线程被传递一个连接字符串(名为pipe),并使用该连接字符串创建一个新的dbcontext。但由于某些原因,它无法连接:Multithreading 螺纹可以';当主流程可以连接时,不要使用命名管道连接;使用用户名和密码,multithreading,c#-4.0,asp.net-mvc-4,sql-server-2008-r2,entity-framework-5,Multithreading,C# 4.0,Asp.net Mvc 4,Sql Server 2008 R2,Entity Framework 5,我使用命名管道首先使用EF代码连接到数据库。它在正常的页面请求生命周期中工作正常 我正在生成一个单独的线程来发送一批电子邮件。该线程被传递一个连接字符串(名为pipe),并使用该连接字符串创建一个新的dbcontext。但由于某些原因,它无法连接: The underlying provider failed on Open. 如果我将连接字符串切换为username-password形式,线程工作正常 有人知道为什么命名管道在正常的页面执行中是好的,但不是线程 我们的暂存服务器是我们使用命名
The underlying provider failed on Open.
如果我将连接字符串切换为username-password形式,线程工作正常
有人知道为什么命名管道在正常的页面执行中是好的,但不是线程
我们的暂存服务器是我们使用命名管道的唯一非活动服务器,因此很难找到它,但它在新的DbContext上出错
示例代码:
var contextConnectionString = dataAccessLayer.ConnectionString;
Task.Factory.StartNew(() =>
{
// Errors on the next line I think
using (var threadSafeDataAccessLayer = new PaladinContext(contextConnectionString))
{
...
}
}
万一我在连接字符串中做错了什么,这里有一个失败的想法:
Data Source=[SERVERNAME]\[INSTANCE_NAME]; Initial Catalog=[correct db name];Integrated Security=SSPI; MultipleActiveResultSets=true
一个成功的例子是:
Data Source=[full url to server]; Initial Catalog=[correct db name]; User Id=[user]; Password=[password];MultipleActiveResultSets=true
只是重申一下,连接字符串仅在生成的线程中失败。这和我在其他地方用的一样
[更新]
在工作连接字符串中,更改数据源=[SERVERNAME][INSTANCE_NAME]不会停止其工作。所以这也可以使用。我不想让这成为一条红鲱鱼