Резюме У нас есть приложение ASP.NET, которое позволяет пользователям запрашивать базу данных SQL Server через средний уровень (довольно стандартный материал).Когда пользователь пытается создать PDF для строк, которые были ему возвращены.Каждый набор строк с общим идентификатором «превратится» в отдельную страницу в результирующем PDF.
Первоначально я предполагал, что число строк будет порядка, способствующего передаче конечного PDF-файла в поток ответов ASP и позволяющего пользователю загружать файл на свой компьютер, но новые требования указываютчто количество строк очень велико и находится за пределами шкалы, для которой я спроектировал это.
Мое текущее решение заключается в следующем:
Если количество возвращаемых строк превышает настроенное значение threshold
, пользователь получает сообщение, в котором спрашивается, хотят ли они создать PDF-файлы в фоновом режиме и получать уведомления отпо электронной почте с URL-адресом, когда они сделаны, чтобы они могли загрузить их.
Если это приемлемо для пользователя, я создаю два DataTable
s: один с фактическими данными, а другой с MetaDataнапример, где сохранить полученный PDF, имя и другую информацию мета-типа.
Затем я могу использовать DataTable.WriteXML
для создания файла «задания» в определенной папке.
Все это делается в отдельном потоке, поэтому пользователь может продолжать делать то, что он хочет.
Проблема :Я действительно хочу сохранить XML-файл задания на компьютере внутри нашего брандмауэра (общая сетевая папка), но, похоже, не могу по соображениям безопасности.Мне сказали, что я мог бы использовать Impersonation и пытался, но не смог заставить его работать.
Другая часть этого приложения - это то, что «слушает» в папке «input» и обрабатывает их«рабочие» файлы один раз в час (или аналогичное расписание), перемещает сгенерированный PDF-файл в нужное место и отправляет электронное письмо пользователю.
Я получил часть, которая читает рабочие файлы и генерирует работающий PDF-файл, ичасть, которая создает файлы заданий, работает (когда я запускаю ее внутри брандмауэра), но когда я запускаю ее вне брандмауэра, даже при попытке подделки, она не работает.(продолжает говорить «Сетевое местоположение не найдено».
Вопрос (ы): Я иду об этом правильным путем?Как мне записать эти файлы через брандмауэр?Любые дизайнерские идеи или предложения?
Заранее спасибо.