#asp.net #wcf #sockets #networking #ftp
#asp.net #wcf #сокеты #сеть #ftp
Вопрос:
Я разрабатываю C # ASP.NET приложение 4.0, которое будет размещаться на Windows Server 2003. Посредством доступа к этому приложению через сетевой компьютер любой пользователь сможет загружать файлы на сервер Windows. Но также, как только эти файлы будут сохранены на сервере, пользователь сможет скопировать эти файлы с сервера Windows на другой компьютер, подключенный к сети.
Я нашел способ загружать файлы в указанное место на диске сервера, но теперь мне нужно отправить эти файлы, которые находятся на диске сервера, на клиентские компьютеры.
Мой вопрос: есть ли какой-либо способ отправить или скопировать файлы с сервера на другие клиентские компьютеры (не тот, который обращается к веб-службе) без необходимости в программе, получающей эти файлы на клиентских компьютерах? FTP, WCF, cmd-команды, сокеты?
Есть идея?
Комментарии:
1. То есть вы хотите, чтобы сервер автоматически распространял файл на клиентские компьютеры?
2. Добро пожаловать в SO. Вы можете обновить свой собственный вопрос, отредактировав его. Вы можете голосовать за вопросы (с повышением или с понижением), и если вы получите ответ, который удовлетворяет вашим потребностям и отвечает на ваш вопрос, вы можете пометить его как ответ
Ответ №1:
Если вы хотите, чтобы пользователи вашего веб-приложения загружали файлы, я бы посмотрел на «универсальный обработчик ashx». Это позволит вам отправлять файлы обратно клиентам через HTTP (ы).
Если вы хотите иметь удаленных пользователей, попросите свой веб-сервер скопировать файлы на другие серверы В ТОЙ ЖЕ локальной СЕТИ, что И СЕРВЕР, вы бы написали, используя обычную систему.Операции ввода-вывода.
Комментарии:
1. Целевые компьютеры — это простые компьютеры, работающие под управлением ОС Windows 7 (на них не запущена конфигурация ftp-сервера). Итак, когда я пытаюсь поместить файлы на них с помощью System. При операциях ввода-вывода возникает исключение. Не могли бы вы немного подробнее объяснить структуру «ashx generic handler». Я немного смущен этим.
Ответ №2:
По локальной сети, если у вас есть правильные разрешения и так далее, вы можете выполнить запись на диск на другом компьютере с помощью File.Копировать — в этом нет ничего особенного.
Если мы говорим об удаленных машинах через Интернет, это совсем другая история. Что-то должно прослушиваться, будь то FTP, WCF, DropBox и т.д.
Если проблема в том, что может быть сложно заставить что-то вроде WCF работать с клиента из-за проблем, таких как проблемы с брандмауэром в Windows 7, вы могли бы выбрать другой маршрут и заставить клиента периодически пинговать сервер в поисках нового содержимого. Чтобы указать серверу точку отсчета, запрос может содержать имя или дату создания самого последнего полученного файла. Сервер мог бы ответить списком новых файлов, а затем клиент мог бы выполнить несколько вызовов WCF, один за другим, чтобы удалить содержимое. Этот шаблон сохраняет весь исходящий трафик клиента.
Комментарии:
1. @user766283: какого рода ошибку вы получили? разрешения? тайм-аут?
2. @user766283: кроме того, насколько велики файлы?
3. Сервер находится в той же сети, что и клиенты, но я попробовал операцию копирования файла: File. Копировать (@»c:/pathforlocalfile «,@»\targetmachinepath.fileExt»); Но возникает исключение, поэтому я предполагаю, что это по интернет-протоколам
4. Выдается ошибка: // Сетевой путь не найден. Но я не понимаю, почему возникает это исключение, потому что доступ к path предоставляется для записи и чтения через сетевые расположения. И файлы — это точки питания MS и текстовые файлы.
5. @beb_lm: Ну, это действительно звучит как проблема с сетью или разрешениями. Файл. Копирование действительно работает в этой ситуации. Я бы дважды проверил (а), действительно ли путь действителен для этого пользователя из этого поля и (б), что вы предоставили разрешения правильному пользователю.
Ответ №3:
Вы можете, если сможете запустить программу от имени учетной записи, имеющей доступ к этому компьютеру. Однако наличие такого доступа в вашей сети, который предоставлял бы доступ к внешнему миру для размещения нефильтрованного файла в вашей внутренней сети, просто требует взлома.
Комментарии:
1. Проблемы с безопасностью не являются проблемой, для доступа к странице требуется имя пользователя и пароль, а сервер подключен по локальной сети (пользователи Интернета не могут получить доступ к приложению). Как это может быть возможно?
2. Имена пользователей и пароли взламываются (обычно потому, что они слабые, повторно используются на нескольких сайтах и не защищены должным образом). Вы собираетесь предоставить неограниченный доступ к программе, которая будет иметь возможность поместить ЛЮБОЙ файл на ЛЮБОЙ компьютер в вашей сети. Находиться за брандмауэром хорошо, пока кто-то не пройдет через него. То, что вы хотите сделать, возможно в сети Windows, потому что у каждого диска есть скрытый корневой ресурс, который позволяет администраторам при необходимости получать к нему удаленный доступ. Для этого требуются права «БОГА» в вашей сети. Таким образом, вам нужно будет предоставить вашей программе эти права для доступа к нему.
Ответ №4:
Наконец, я решил установить FTP-сервер FileZilla на каждый клиентский компьютер, и моя страница работает очень хорошо. Но другой вариант — создать рабочую группу на сервере Windows и включить каждый клиентский компьютер для работы в этой рабочей группе, чтобы сервер Windows имел доступ к компьютерам в той же рабочей группе. Вот несколько ссылок, которые могут помочь создать рабочие группы:
http://helpdeskgeek.com/networking/cannot-see-other-computers-on-network-in-my-network-places/
http://www.computing.net/answers/windows-2003/server-2003-workgroup-setup-/1004.html