Member 13818561 Ответов: 1

Ошибка при отладке опубликована ASP.NET проект


Мне нужно решение,я использую Visual studio 2015 и SQL server 2014.

Я опубликовал проект, используя файловую систему типа соединения.

После этого опубликованные файлы копируются в средство администрирования IIS.

Во время отладки проект не подключается к локальной базе данных.

Строка подключения задается следующим образом
&ЛТ;добавить имя="АБВГД" свойства connectionString="источник данных=myServerAddress;начальный каталог=данных mydatabase;Комплексная безопасность=true; в" имя_поставщика="системы.Данных.В sqlclient" /&ГТ;


Я получил ошибку типа,

System.Data.SqlClient.SqlException (0x80131904): Cannot open database "mydatabase" requested by the login. The login failed. Login failed for user 'IIS APPPOOL\DefaultAppPool'. at System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, UInt32 waitForMultipleObjectsTimeout, Boolean allowCreate, Boolean onlyOneCheckConnection, DbConnectionOptions userOptions, DbConnectionInternal& connection) at System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal& connection) at System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal oldConnection, DbConnectionInternal& connection) at System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions) at System.Data.SqlClient.SqlConnection.TryOpenInner(TaskCompletionSource`1 retry) at System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource`1 retry) at System.Data.SqlClient.SqlConnection.Open() at PayRoll.AdminLogin.Button1_Click(Object sender, EventArgs e) ClientConnectionId:4f84ac56-d0ec-4ce6-aa8b-300aca58ca81 Error Number:4060,State:1,Class:11

Что я уже пробовал:

I followed this link. 

https://www.c-sharpcorner.com/UploadFile/francissvk/how-to-publish-Asp-Net-web-application-using-visual-studio-2/

1 Ответов

Рейтинг:
12

Dave Kreskowiak

Вероятно, это связано с тем, что ваша строка подключения использует "интегрированную безопасность". Это означает, что учетная запись, на которой работает ваш ASP.NET код на сервере-это учетная запись, используемая для входа в SQL Server, и эта учетная запись не имеет на это разрешений.

Я предлагаю создать учетную запись, имеющую соответствующие разрешения на доступ к базе данных, и изменить строку подключения, чтобы использовать эту учетную запись вместо использования встроенной безопасности.


Member 13818561

Большое вам спасибо, сэр. Это работает на меня.

Member 13818561

Сэр у меня есть сомнения,
Я хотел конвертировать данные из excel в dataTable. Это прекрасно работает. Но после публикации моего проекта остальная часть всей страницы работает нормально. Но только этот код страницы не работает. пожалуйста, дайте мне предложения.

Member 13818561

Я использовал этот код.
Microsoft.Офис.Взаимодействие.Превосходить.Приложение objXL = null;

//Ссылка на рабочую книгу

Microsoft.Офис.Взаимодействие.Превосходить.Рабочая книга objWB = null;

//DataSet ds = новый набор данных();

//пробовать
//{

//Создание экземпляра Excel с помощью COM-служб

objXL = новый Microsoft.Офис.Взаимодействие.Превосходить.Приложение();

//Добавить Книгу
objWB = objXL.Workbooks.Открытый путь);

по каждому элементу (Майкрософт.Офис.Взаимодействие.Превосходить.Рабочий лист objSHT в objWB.Рабочий лист)

int rows = objSHT.UsedRange.Rows.Рассчитывать;
int cols = objSHT.UsedRange.Столбцы.Рассчитывать;
DataTable dt = новый DataTable();
int noofrow = 1;
//Если 1-я строка содержит уникальные заголовки для datatable include this part else удалите ее

//Начало
для (тип int с = 1; с &ЛТ;= седла; на C++)
{
строка colname = objSHT.Ячейки[1, с].текст;
ДТ.колонны.Добавить(colname);
noofrow = 2;
}
//КОНЕЦ
for (int r = noofrow; r <= rows; r++)
{
Доктор строкаданных = ДТ.Невров();

для (тип int с = 1; с &ЛТ;= седла; на C++)
{

dr[c - 1] = objSHT.Ячейки[r, c].текст;
}

ДТ.Строк.Добавить(д-р);
}

ДС.столы.Добавить(dt);}

Member 13818561

На самом деле проблема в том, что ссылки не публикуются при публикации книги. asp.net проект. Так что же мне делать?

Dave Kreskowiak

Это потому, что Office не установлен на веб - сервере. Вы также не можете установить Office на веб-сервере и ожидать, что этот код будет работать.

Приложения Office не поддерживают повторный вход, то есть они не могут обрабатывать несколько запросов с веб-сервера одновременно.

Member 13818561

Я получаю эту ошибку.
System.UnauthorizedAccessException: Retrieving the COM class factory for component with CLSID {00024500-0000-0000-C000-000000000046} failed due to the following error: 80070005 Access is denied. (Exception from HRESULT: 0x80070005 (E_ACCESSDENIED)). at System.Runtime.Remoting.RemotingServices.AllocateUninitializedObject(RuntimeType objectType) at System.Runtime.Remoting.Activation.ActivationServices.CreateInstance(RuntimeType serverType) at System.Runtime.Remoting.Activation.ActivationServices.IsCurrentContextOK(RuntimeType serverType, Object[] props, Boolean bNewObj) at System.RuntimeTypeHandle.CreateInstance(RuntimeType type, Boolean publicOnly, Boolean noCheck, Boolean& canBeCached, RuntimeMethodHandleInternal& ctor, Boolean& bNeedSecurityCheck) at System.RuntimeType.CreateInstanceSlow(Boolean publicOnly, Boolean skipCheckThis, Boolean fillCache, StackCrawlMark& stackMark) at System.Activator.CreateInstance(Type type, Boolean nonPublic) at System.Activator.CreateInstance(Type type) at Project1.WebForm1.READExcel(String path)

Dave Kreskowiak

Вы не можете использовать Excel Interop в ASP.NET применение. Вы должны переписать этот код, чтобы использовать либо

1) OLEDB для получения данных,

2) или OpenXML SDK.

Ни одно из офисных приложений не поддерживается в непользовательском интерактивном сеансе, например службы Windows или веб-приложения. Они могут использоваться только в приложениях, где пользователь фактически вошел в консоль, например Windows Forms или WPF.

Чтение и запись Microsoft Excel с помощью Open XML SDK[^]

Чтение и запись файла Excel с OLEDB в C# (без взаимодействия)[^]