接続を開くときにC#コードに例外がスローされています。 Visual Studioは「接続が閉じられていません」という例外をスローします。接続の現在の状態は開いています。 '奇妙なことは、接続が全く開いていないということです。接続を開くときに例外がスローされるのはなぜですか?
奇妙なことは、問題が1台のPC(PC-1)でのみ発生することです。他の2台のPC(PC-2とPC-3)では、コードはコンパイルされ、他の2台のPC上で正常に実行されます。これらのPC-2やPC-3からAzureにデプロイすると、すべて動作します。
すべての3台のPCには、同じバージョンのVisual Studio 2010 SP1(10.0.40219.1 SP1Rel)、.NET(4.0.30319 SP1Rel)、Azure 1.6 SDK、Azure Ap Fabric 1.5.37およびAzureツール(VS2010用1.6.41103.1601コードを取得するためには、問題のPC上で
System.InvalidOperationException was unhandled by user code
Message=The connection was not closed. The connection's current state is open.
Source=System.Data
StackTrace:
at System.Data.ProviderBase.DbConnectionInternal.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory)
at System.Data.SqlClient.SqlConnection.Open()
at myPost.Models.Repository.Foo(Int64 rId, Int64 mItemId) in C:\code\Models\Repository.cs:line 326
at myPost.Models.Repository.Foo(Int64 menuItemId, Int64 rId, mItemRatings[]& ratings, Photos[]& thumbnails) in C:\code\Models\Repository.cs:line 92
at myPost.Controllers.HomeController.Index(String part1, String part2, String embed) in C:\code\Controllers\HomeController.cs:line 97
at lambda_method(Closure , ControllerBase , Object[])
at System.Web.Mvc.ActionMethodDispatcher.Execute(ControllerBase controller, Object[] parameters)
at System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext, IDictionary`2 parameters)
at System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary`2 parameters)
at System.Web.Mvc.ControllerActionInvoker.<>c__DisplayClass15.<InvokeActionMethodWithFilters>b__12()
at System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodFilter(IActionFilter filter, ActionExecutingContext preContext, Func`1 continuation)
InnerException:
(PC-1):ここで
private long[] Foo(long rId, long mItemId)
{
List<long> list = null;
using (myDBEntities ctx = new myDBEntities())
{
EntityConnection entityConnection = (EntityConnection)ctx.Connection;
using (DbConnection connection = entityConnection.StoreConnection)
{
connection.Open();
...
がフル例外の詳細です:)
は、ここでは、コードの適切な部分です実行するには、私はconnection.Open();
の直前にconnection.Close();
を追加してください。しかし、これはPC-2とPC-3で壊れてしまい、さらに悪いことにAzureにデプロイすると例外が発生します。これは、connection.Close()
を追加したためです。
私はPC-1の設定がコードの問題ではなく設定上の問題のように思われるので、何が間違っているのか分かりません。
コードを実行する前に、最初のpcからSQL Server MSのAzureインスタンスに接続しましたか? – Lloyd
いいえ私はAzureへの唯一の接続はこのプロジェクトからです。それは私が実行している唯一のコードです。 – TMC
同じ問題を引き起こすVSデータベースウィザードから接続文字列を作成しましたか? VS内だけでなく、アプリケーションをローカルに構築して展開する場合も、同じ問題が発生しますか? – Lloyd