У меня есть приложение MVC4, которое использует элемент управления ReportViewer на странице aspx внутри iframe в моем представлении бритвы. Я последовал этому ответу здесь: https://stackoverflow.com/a/11055132/876511.
Ну, это работало нормально на локальном хосте, но не при развертывании на сервере.
Первая ошибка, которую я получил, была решена путем установки для свойства «Копировать локально» значения true в справочнике Microsoft.ReportViewer.WebForms.
Затем я получил эту ошибку на сервере: «Не удалось загрузить файл или сборку 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, логическое значение allowCreate, логическое значение onlyOneCheckConnection, DbConnectionOptions userOptions, DbConnectionInternal & connection) + 414. +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, 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, логическое значение и выполнено синхронно) +69
Какой сетевой путь? SQL-сервер? Остальное приложение работает нормально.
Пожалуйста, помогите мне, я застрял здесь на несколько дней, и у меня больше нет идей.
ИЗМЕНИТЬ:
Нашел где ошибка. В моем web.config.release у меня есть это:
<sessionState mode="SQLServer" sqlConnectionString="Data Source=SQLSERVER;User ID=ASPState;Password=XXXXXXX" timeout="120" xdt:Transform="Replace"/>
Когда я комментирую, reportViewer работает, иначе выдает сетевую ошибку. Что-то не так, возможно со строкой подключения, не знаю что.
EDIT2: Строка Conn подходит, иначе она не будет работать во всем приложении.
Моя новая догадка заключается в том, что это смесь MVC и веб-форм... MVC нормально подключается к серверу состояния сеанса, но моя веб-форма не работает. Почему?