Открыть блокнот из бизнес-приложения Silverlight 4 - PullRequest
0 голосов
/ 03 августа 2011

У меня есть бизнес-приложение Silvleright, Silverlight_BussApp. Он имеет проект Silverlight_BussApp и проект Silverlight_BussApp.Web.

Мне нужно открыть Блокнот после заполнения его в коде после нажатия кнопки. Я не могу сделать это из приложения браузера.

Так как Silverlight не позволяет мне это делать, я создал службу WCF в проекте Silverlight_BussApp.Web и вызвал его через прокси в проекте Silverlight. Это отлично работает. Код в службе WCF:

  public void openFileWithNotepad(string filename)
        {
            try
            {
                if (File.Exists(filename))
                {
                    Process.Start("notepad.exe", filename);
                }
                else
                {
                    MessageBox.Show(
                           "I was unable to locate the following file: " + filename,
                           "File Not Found");
                }

            }
            catch (Exception e)
            {
                throw e;
            }
        }

Теперь мне нужно использовать эту openFile функциональность в нескольких проектах Silverlight. Поэтому я создал «Проект службы WCF», создал службу WCF, разместил ее в IIS и создал прокси в проекте Silverlight. К моему ужасу, файл не открывается и продолжает выдавать ошибку «Файл не найден». Может ли кто-нибудь помочь мне понять, как сделать эту функцию многоразовым для всех моих проектов Silverlight?

Почему, когда я использую один и тот же код в службе WCF, размещенной на IIS, он не работает, хотя работает отлично, если размещен в том же решении проекта Silverlight?

1 Ответ

1 голос
/ 04 августа 2011

Для начала код в проекте Silverlight_BussApp.Web будет выполняться на сервере , в то время как код в проекте Silverlight_BussApp будет выполняться на клиенте . Во время разработки клиент и сервер якобы являются одним и тем же компьютером - когда вы нажимаете «Выполнить» в Visual Studio, веб-сервер разработки запускается на вашем компьютере и размещает ваш .Web проект, а приложение Silverlight запускается в вашем браузере.
Когда ваше приложение развернуто, клиент (т. Е. Ваш браузер), скорее всего, будет находиться на другой физической машине, чем сервер (то есть IIS). Таким образом, игнорируя любые другие ограничения безопасности, которые могут быть наложены IIS (возможно, именно поэтому вы получаете сообщение об ошибке «Файл не найден»), вызов Process.Start запустит Блокнот на совершенно другом машина, чем та, которую вы используете.

Попробуйте использовать SaveFileDialog, чтобы сохранить все, что вы хотите, на компьютере клиента, а затем попросите их открыть полученный файл.

...