カミソリ ビューの iframe 内の aspx ページで ReportViewer コントロールを使用している MVC4 アプリがあります。ここでこの回答に従いました: https://stackoverflow.com/a/11055132/876511。
これはローカルホストでは問題なく機能しましたが、サーバーにデプロイすると機能しません。
最初に発生したエラーは、Microsoft.ReportViewer.WebForms Reference の「Copy Local」プロパティを true に設定することで解決されました。
サーバーで次のエラーが発生しました。「ファイルまたはアセンブリ 'Microsoft.ReportViewer.Common' を読み込めませんでした」。そのために、「C:\windows\assembly\GAC_MSIL\Microsoft.ReportViewer.Common\11.0.0.0__89845dcd8080cc91」から dll をサーバーの bin ディレクトリに手動でコピーしました。
しかし、今、私はそれを理解できないというこのエラーを取得しています:
[Win32Exception (0x80004005): ネットワーク パスが見つかりませんでした]
[SqlException (0x80131904): SQL Server への接続を確立中に、ネットワーク関連またはインスタンス固有のエラーが発生しました。サーバーが見つからないか、アクセスできませんでした。インスタンス名が正しいこと、および SQL Server がリモート接続を許可するように構成されていることを確認してください。(プロバイダー: 名前付きパイプ プロバイダー、エラー: 40 - SQL Server への接続を開けませんでした)] System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, UInt32 waitForMultipleObjectsTimeout, Boolean allowCreate, Boolean onlyOneCheckConnection, DbConnectionOptions userOptions, DbConnectionInternal& connection) + 414
System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection 所有オブジェクト、TaskCompletionSource1 retry, DbConnectionOptions userOptions, DbConnectionInternal& connection) +78
1 回の再試行、DbConnectionOptions userOptions、DbConnectionInternal& 接続) +167
System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection, TaskCompletionSource
System.Data.ProviderBase.DbConnectionClosed.TryOpenConnection(DbConnection outerConnection、DbConnectionFactory connectionFactory、TaskCompletionSource 1 回の再試行) +83 System.Data.SqlClient.SqlConnection.Open() +96 System.Web。 SessionState.SqlStateConnection..ctor(SqlPartitionInfo sqlPartitionInfo、TimeSpan retryInterval) +1101 retry, DbConnectionOptions userOptions) +143
System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource[HttpException (0x80004005): SQL Server セッション データベースに接続できません。]
System.Web.SessionState.SqlSessionStateStore.ThrowSqlConnectionException(SqlConnection conn、Exception e) +235
System.Web.SessionState.SqlStateConnection..ctor(SqlPartitionInfo sqlPartitionInfo、TimeSpan retryInterval ) +944
System.Web.SessionState.SqlSessionStateStore.GetConnection(String id, Boolean& usePooling) +231
System.Web.SessionState.SqlSessionStateStore.SetAndReleaseItemExclusive(HttpContext context, String id, SessionStateStoreData item, Object lockId, Boolean newItem) +199
System. Web.SessionState.SessionStateModule.OnReleaseState(オブジェクト ソース、EventArgs eventArgs) +798
System.Web.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +136 System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +69
ネットワークパスは?SQLサーバー?アプリの残りの部分はうまくいきます。
私を助けてください、私はここで数日間立ち往生しており、これ以上アイデアがありません.
編集:
エラーの場所がわかりました。私のweb.config.releaseにはこれがあります:
<sessionState mode="SQLServer" sqlConnectionString="Data Source=SQLSERVER;User ID=ASPState;Password=XXXXXXX" timeout="120" xdt:Transform="Replace"/>
reportViewer が機能することをコメントアウトすると、それ以外の場合はネットワーク エラーが発生します。おそらくconn文字列に問題がありますが、何が問題なのかわかりません。
EDIT2: Conn 文字列は問題ありません。そうしないと、アプリ全体では機能しません。
私の新しい推測は、MVC と Web フォームが混在しているためです... mvc はセッション状態サーバーに正常に接続しますが、Web フォームは接続しません。なんで?