Позвольте загрузки MDB в IIS7

В настоящее время, если я размещаю Доступ.MDB файл, чтобы позволить пользователям загружать, IIS7 бросает 404 ошибки. Я знаю, что файл там, и полномочия прекрасны. Это, кажется, проблема Обработчика, но я не могу выяснить, как изменить обработчик, чтобы позволить загружать файла MDB. Я предполагаю, что должен добавить что-то к разделу Handlers web.config, но я не уверен в синтаксисе.

Спасибо.

5
задан Fionnuala 20 January 2012 в 17:42
поделиться

2 ответа

Хорошо, нашел его.

Просто нужно удалить следующую строку:

<add fileExtension=".mdb" allowed="false" />

в разделе «Запрос защитника» из файла \ Windows \ System32 \ inetserv \ config @ applationhost.config.

1
ответ дан 14 December 2019 в 01:09
поделиться

Эта веб-страница описывает три возможных способа и ссылки на полезные библиотеки.

Нет простого встроенного способа визуализации текста, и есть (как подробно описано на этой странице) sevaral возможных подходов, все это компромисс в зависимости от того, какие свойства вы требуете от визуализации текста.

-121--3302978-

Возможно, вам сойдет с рук именованный семафор. Семафор - это в основном подсчет, он здесь, чтобы позволить разработчикам ограничить количество потоков/процессов, которые обращаются к какому-то ресурсу. Обычно это работает так

  1. Вы создаете семафор с максимальным количеством N.
  2. N потоков вызывают функцию ожидания на нем, WaitForSingleObject или тому подобное, и каждый из них продолжается без ожидания. Каждый раз, когда внутренний счетчик семафора падает.
  3. N + 1 поток также вызывает функцию ожидания, но поскольку внутренний счетчик нашего семафора 0 сейчас, он должен подождать.
  4. Один из первых N потоков освобождает семафор, вызывая функцию ReleaseSemaphore . Эта функция увеличивает внутренний счетчик семафора.
  5. Наш поток ожидания не должен ждать сейчас, поэтому он возобновляется, но счетчик семафора возвращается к 0.

Я не думаю, что вы хотите использовать это так. Вместо этого следует:

  1. Создать именованный семафор с начальным счетчиком, равным нулю.
  2. При запуске приложения немедленно отпустите его, увеличив счетчик. Вы получите предыдущее значение счетчика во время этого звонка.
  3. После завершения приложения вызовите WaitForSingleObject (hSemaphore, 0) , уменьшив значение счетчика. 0 означает, что вы не хотите ждать.

Все это довольно просто.

В C++

//create semaphore
HANDLER hSemaphore = CreateSemaphore(NULL, 0, BIG_NUMBER, "My cool semaphore name");
//increase counter
LONG prev_counter;
ReleaseSemaphore(hSemaphore, 1, &prev_counter);
//decrease counter
WaitForSingleObject(hSemaphore, 0);

В C #

using System.Threading;
//create semaphore
Semaphore sem = new Semaphore(0, BIG_NUMBER, "My cool semaphore name");
//increase counter
int prev_counter = sem.Release(); 
//decrease counter
sem.WaitOne(0);

имена и BIG_NUMBERs должны быть одинаковыми.

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

-121--4746350-

Или, если вы не хотите изменять системный файл конфигурации, вы можете добавить следующие строки в этот раздел web.config:

<remove fileExtension=".mdb" />
<add fileExtension=".mdb" allowed="true"/>

Например, Web.config должен быть похож на следующий:

<configuration>
  <system.webServer>
    <security>
      <requestFiltering>
        <fileExtensions allowUnlisted="true" >
          <remove fileExtension=".mdb" />
          <add fileExtension=".mdb" allowed="true"/>
        </fileExtensions>
     </requestFiltering>
   </security>
 </system.webServer>
</configuration>

Также см. http://www.adamwlewis.com/articles/iis-7-not-serving-files-4047-error .

8
ответ дан 14 December 2019 в 01:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: