0

カミソリ ビューの 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
System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection, TaskCompletionSource
1 回の再試行、DbConnectionOptions userOptions、DbConnectionInternal& 接続) +167
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 フォームは接続しません。なんで?

4

1 に答える 1

0

試す

ReportViewerRSFReports.ProcessingMode = ProcessingMode.Remote;
ReportViewerRSFReports.ServerReport.ReportServerCredentials = new CustomReportCredentials("user", "pass", "domain");
ReportViewerRSFReports.ServerReport.ReportServerUrl = new Uri("http://<Server Name>/ReportServer");
ReportViewerRSFReports.ServerReport.ReportPath = "/MYAPP/test";
ReportViewerRSFReports.ServerReport.Refresh();

reportserver.mydomainReportServer に置き換えます。

vaoid エラーに対して、私は通常、レポートの展開中に BID 出力ウィンドウからレポート サーバーの URL とレポート パスを取得します。

于 2013-07-05T13:17:39.453 に答える