2013-11-08 2 views
0

По различным соображениям безопасности мы внедрили сборку, которая требует наличия текстового файла вместе с ним. Мы хотели бы использовать эту библиотеку в нашем приложении ASP.NET. Проблема, с которой мы сталкиваемся, заключается в том, что при запуске приложения загрузка нашей сборки завершается сбоем, потому что требуемый текстовый файл не находится в подкаталоге временных файлов ASP.NET, из которого загружается сборка. Есть ли способ настроить сборку для загрузки из каталога bin? Если нет способа предсказать, куда будет идти dll, и написать сценарий, чтобы вручную скопировать наш файл там?Временные файлы IIS

+1

Не было бы проще добавить параметр конфигурации, который указывает, где находится файл на диске? –

+0

Я подумал об этом, но в этом случае оказалось, что это не вариант. – Colin

ответ

0

Я думаю, что включение этого текстового файла в ваш проект решит вашу проблему.

Вот что вам нужно

  1. Добавить текст в свой проект с помощью Add-Existing пункта
  2. правой кнопкой мыши на Textfile и выберите Построить Действие, как «Материалы»
  3. Выберите Копировать в выходной каталог как «Копировать всегда»
0

Проблема заключается в том, как вы разрешаете текущую папку загружать текстовый файл в свою сборку.

Чтобы получить корневую папку IIS, вы должны использовать свойство AppDomain.CurrentDomain.BaseDirectory.

Если ваш текстовый файл уже находится в папке Web Application bin, смешайте:

Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "bin"); 

Вы можете использовать AppDomain.CurrentDomain.RelativeSearchPath свойство быть чистым.

Path.Combine(AppDomain.CurrentDomain.BaseDirectory, AppDomain.CurrentDomain.RelativeSearchPath); 
+0

Хотел бы я вернуться, чтобы проверить ваш ответ раньше. Я думаю, что это решение может работать. Что касается ситуации с консольным приложением или ситуации с окнами. Будет ли он работать и в этом случае? – Colin

+0

Есть ли способ сделать что-то, что говорит IIS, чтобы скопировать текстовый файл в место сборки в динамическое время компиляции? Таким образом, текстовый файл уже будет рядом с сборкой, когда я вызову Assembly.GetExecutingAssembly(). Место из самой сборки. – Colin

+0

О приложении консоли или Windows, хорошо, что «AppDomain» связан с тем, где приложение присутствует. Таким образом, 'BaseDirectory' является правильным в каждом случае, в отличие от' Environment.CurrentDirectory'. – JoeBilly

Смежные вопросы