我有一个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,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, TaskCompletionSource1 retry, DbConnectionOptions userOptions) +143
1 重试)+83 System.Data.SqlClient.SqlConnection.Open()+96
System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource
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没有。为什么呢?
答案 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窗口的路径。