从Silverlight 4业务应用程序打开记事本

时间:2011-08-03 19:56:08

标签: silverlight silverlight-4.0 iis-7 wcf

我有一个Silvleright业务应用程序,Silverlight_BussApp。 它有Silverlight_BussApp项目和Silverlight_BussApp.Web项目。

我需要在按钮点击事件后面的代码中填充后打开记事本。 我无法使用浏览器应用程序。

因为Silverlight不允许我这样做,所以我在Silverlight_BussApp.Web项目中创建了一个WCF服务 并通过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;
            }
        }

现在我需要在多个Silverlight项目中使用此openFile功能。 所以我创建了一个“WCF服务项目”并创建了一个WCF服务,在IIS上托管它,并在Silverlight项目中创建了一个代理。令我沮丧的是,该文件没有打开,它一直给我“找不到文件”错误。 有人可以帮我弄清楚如何使我的所有Silverlight项目成为可重用的功能吗?

为什么当我在IIS上托管的WCF服务中使用相同的代码时,当它在Silverlight项目的同一解决方案中托管时,它无法正常工作?

1 个答案:

答案 0 :(得分:1)

对于初学者来说,Silverlight_BussApp.Web项目中的代码将在服务器上执行,而Silverlight_BussApp项目中的代码将被执行在客户端。在开发过程中,客户端和服务器表面上是同一台机器 - 当您在Visual Studio中单击“运行”时,开发Web服务器将在您的计算机上启动并托管您的.Web项目,而Silverlight应用程序在您的浏览器中运行。
部署应用程序时,客户端(即您的浏览器)很可能与服务器(即IIS)位于不同的物理机器上。因此,忽略IIS可能施加的任何其他安全限制(这可能是您收到“找不到文件”错误的原因),对Process.Start的调用将启动记事本与您正在使用的机器完全不同的机器。

尝试使用SaveFileDialog将您想要的任何内容保存到客户端的计算机上,然后告诉他们打开生成的文件。