Удаленные клиенты Не удается открыть файл XLS с помощью ASP.NET/ADO - PullRequest
1 голос
/ 01 октября 2008

Я пытаюсь сделать следующее:

  1. Пользователь заходит на веб-страницу, загружает файл XLS
  2. используйте ADO .NET, чтобы открыть файл XLS, используя соединение с механизмом JET для локально загруженного файла на веб-сервере

Все это прекрасно работает локально (мой компьютер как клиент и веб-сервер) - и фактически работает на веб-сервере клиента с удаленными клиентами, но не работает при попытке внутреннего тестирования с использованием удаленного клиента.

Я получаю ошибку:

TIME:       [10/1/2008 11:15:28 AM]
SEVERITY:   EXCEPTION
PROGRAM:    Microsoft JET Database Engine
EXCEPTION:  Unspecified error
STACK TRACE:       at System.Data.OleDb.OleDbConnectionInternal..ctor(OleDbConnectionString constr, OleDbConnection connection)
   at System.Data.OleDb.OleDbConnectionFactory.CreateConnection(DbConnectionOptions options, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningObject)
   at System.Data.ProviderBase.DbConnectionFactory.CreateNonPooledConnection(DbConnection owningConnection, DbConnectionPoolGroup poolGroup)
   at System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection owningConnection)
   at System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory)
   at System.Data.OleDb.OleDbConnection.Open()

Код, генерирующий ошибку:

OleDbConnection l_DbConnection;
        OleDbDataAdapter l_DbCommand;
        DataSet l_dataSet = new DataSet();

        l_DbConnection = new OleDbConnection("provider=Microsoft.Jet.OLEDB.4.0; data source=\"" + l_importFileName + "\";Extended Properties=Excel 8.0;");
        l_DbCommand = new OleDbDataAdapter("select * from [Sheet1$]", l_DbConnection);

        //try using provider to read file
        try { l_DbConnection.Open(); }

Вызов «Open» вызывает исключение выше.

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

Выполнил следующие действия http://support.microsoft.com/kb/251254/ и назначил разрешения для каталога переменных среды TMP / TEMP пользователю, которого я использую для тестирования (также назначены разрешения для ASPNET, а затем для «Все» в качестве общего слоя », это связанные с разрешениями? "test).

Гарантируется, что файл загружается, а сам файл XLS унаследовал разрешения каталога, которые предоставляют пользователю полный доступ к файлу. Я также дал разрешения dir «Все» на всякий случай - это тоже не помогло.

Мне не нужно было изменять какие-либо переменные среды, и поэтому я не перезапускался после внесения этих изменений - но мне не нужно было, чтобы разрешения для папок / файлов Windows вступили в силу.

На данный момент я в полной растерянности

Ответы [ 2 ]

2 голосов
/ 01 октября 2008

Ладно, разобрался -

получается, что даже с IIS, использующим олицетворение и переменными среды TMP / TEMP, установленными в C: \ WINDOWS \ Temp, процесс ASP.NET по-прежнему выполняется под учетной записью ASPNET, и каждому отдельному пользователю необходимы разрешения на доступ к документам и настройкам. \ ASPNET \ Local Settings \ Temp folder

Другим способом решения этой проблемы может быть создание нового пула приложений и запуск этого пула приложений с правами доступа к нужной папке, а не ASPNET

.
0 голосов
/ 20 февраля 2009

Перейти в каталог \ Documents and Settings \ "machineName" \ ASPNET \ Локальные настройки \ Temp и дать права на чтение, запись пользователю "EveryOne" Тогда все будет работать нормально. Кроме того, вы должны установить "" в файле web.config

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...