SessionState服务器无法在MVC应用程序内的WebForm中工作

时间:2013-07-05 12:37:53

标签: asp.net-mvc iis reporting-services webforms reportviewer

我有一个MVC4应用,它在我的剃刀视图中的iframe内的aspx页面上使用ReportViewer控件。我在这里听到了这个答案:https://stackoverflow.com/a/11055132/876511

这在localhost上运行正常但是当我部署到服务器时它没有。

我得到的第一个错误是通过将“Copy Local”属性设置为Microsoft.ReportViewer.WebForms Reference的true来解决的。

我在服务器上遇到此错误:“无法加载文件或程序集'Microsoft.ReportViewer.Common”。为此我手动将dll从“C:\ windows \ assembly \ GAC_MSIL \ Microsoft.ReportViewer.Common \ 11.0.0.0__89845dcd8080cc91”复制到服务器上的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&连接)+414
  System.Data.ProviderBase.DbConnectionPool.TryGetConnection(的DbConnection   owningObject,TaskCompletionSource 1 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 retry, DbConnectionOptions userOptions) +143
System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource
1   重试)+83 System.Data.SqlClient.SqlConnection.Open()+96
  System.Web.SessionState.SqlStateConnection..ctor(SqlPartitionInfo   sqlPartitionInfo,TimeSpan retryInterval)+110

     

[HttpException(0x80004005):无法连接到SQL Server会话   数据库]
  System.Web.SessionState.SqlSessionStateStore.ThrowSqlConnectionException(的SqlConnection   conn,例外e)+235
  System.Web.SessionState.SqlStateConnection..ctor(SqlPartitionInfo   sqlPartitionInfo,TimeSpan retryInterval)+944
  System.Web.SessionState.SqlSessionStateStore.GetConnection(String id,   布尔和放大器; usePooling)+231
  System.Web.SessionState.SqlSessionStateStore.SetAndReleaseItemExclusive(HttpContext的   context,String id,SessionStateStoreData item,Object lockId,Boolean   newItem)+199
  System.Web.SessionState.SessionStateModule.OnReleaseState(对象   source,EventArgs eventArgs)+798
  System.Web.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()   +136 System.Web.HttpApplication.ExecuteStep(IExecutionStep step,Boolean& completedSynchronously)+69

什么网络路径? SQL Server?应用程序的其余部分很好。

请帮助我,我已经被困在这里几天,没有更多的想法。

修改

找出错误的位置。在我的web.config.release我有这个:

<sessionState mode="SQLServer" sqlConnectionString="Data Source=SQLSERVER;User ID=ASPState;Password=XXXXXXX" timeout="120" xdt:Transform="Replace"/>

当我注释掉reportViewer工作时,否则会出现网络错误。有些事情错了,可能是conn字符串,不知道是什么。

EDIT2: Conn字符串很好,否则无法在intire app上使用。

我的新猜测是因为它混合了MVC和Webforms ...... mvc连接ok到sessionstate服务器,但我的webform没有。为什么呢?

1 个答案:

答案 0 :(得分: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.mydomain替换为ReportServer。

对于vaoid错误,我通常会在报告部署期间获取报告服务器URL并报告来自BID out put窗口的路径。