0

以下のクラスがある場合、Visual Studio で Web サイトを起動すると、home/indexが呼び出されたときに次のエラーが発生します (これは実際には内部例外です)。

A transport-level error has occurred when receiving results from the server. (provider: Shared Memory Provider, error: 0 - The handle is invalid.)

at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection)
at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection)
at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning()
at System.Data.SqlClient.TdsParserStateObject.ReadSniError(TdsParserStateObject stateObj, UInt32 error)
at System.Data.SqlClient.TdsParserStateObject.ReadSni(DbAsyncResult asyncResult, TdsParserStateObject stateObj)
at System.Data.SqlClient.TdsParserStateObject.ReadNetworkPacket()
at System.Data.SqlClient.TdsParserStateObject.ReadBuffer()
at System.Data.SqlClient.TdsParserStateObject.ReadByte()
at System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj)
at System.Data.SqlClient.SqlDataReader.ConsumeMetaData()
at System.Data.SqlClient.SqlDataReader.get_MetaData()
at System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString)
at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async)
at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, DbAsyncResult result)
at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method)
at System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method)
at System.Data.SqlClient.SqlCommand.ExecuteDbDataReader(CommandBehavior behavior)
at System.Data.Common.DbCommand.ExecuteReader(CommandBehavior behavior)
at System.Data.EntityClient.EntityCommandDefinition.ExecuteStoreCommands(EntityCommand entityCommand, CommandBehavior behavior)

ただし、まったく同じコードをローカルで公開し、WebMatrix を使用してサイトにアクセスすると、問題なく動作します。

それが違いを生む場合、私もSQL Server 2008 Expressを使用しています。さらに情報が必要な場合はお知らせください。

コントローラ

public class HomeController : BaseController
{
    public ActionResult Index()
    {
        var candidates = BusinessObj.AllOf<Candidate>().ToList();
        return View(candidates);
    }
}

BaseController

public class BaseController : Controller
{
    protected ITestBusinessObject BusinessObj { get; set; }

    public BaseController()
    {
        BusinessObj = new Business.TestBusinessObj();
    }
}

TestBusinessObj (エンティティは EF edmx クラスです)

public class TestBusiness : ITestBusinessObject
{
    private Entities DB = new Entities();
    private string ContainerName = "Entities";

    public IEnumerable<T> AllOf<T>() where T : class, new()
    {
        return DB.CreateObjectSet<T>(ContainerName.GetEntitySetName<T>());
    }

    private static string GetEntitySetName<T>(this string containerName) where T : new()
    {
        var name = new T().GetType().Name;
        if (name.EndsWith("y"))
        {
            name = name.Substring(0, name.Length - 1) + "ies";
        }
        else
        {
            name = name + "s";
        }
        return string.Format("{0}.{1}", containerName, name);
    }
}
4

1 に答える 1

1

これは解決策というよりは提案であるためコメントとして始まりましたが、応答、この一見ランダム/隔四半期程度のローカルでの個人的な経験、およびインターネット検索の結果に基づいて、再起動するとこれが修正されるようです多くの場合、問題が発生します。

サーバーから結果を受信するときにトランスポートレベルのエラーが発生しました

http://www.garrypassarella.co.uk/2011/05/12/a-transport-level-error-has-occurred-when-receiveing-results-from-the-server-provider-shared-memory-provider-エラー-0-the-handle-is-invalid/

http://www.soulsolutions.com.au/Blog/tabid/73/EntryId/666/A-transport-level-error-has-occurred.aspx

コンセンサスは、メモリパイプの共有の性質と、システムの再起動が実行されるまでエラーを引き起こす他のバックグラウンドプロセスに追いつくことに集中しています。

于 2012-11-07T14:08:47.590 に答える