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

从Silverlight 4业务应用程序打开记事本,silverlight,silverlight-4.0,iis-7,wcf,Silverlight,Silverlight 4.0,Iis 7,Wcf,我有一个Silverlight业务应用程序,Silverlight\u BussApp。 它有Silverlight\u-BussApp项目和Silverlight\u-BussApp.Web项目 我需要打开记事本后,填充在代码背后的按钮点击事件。 我无法将其作为脱离浏览器的应用程序 因此,由于Silverlight不允许我这样做,我在Silverlight_BussApp.Web项目中创建了一个WCF服务 并通过Silverlight项目中的代理调用它这很好用。 WCF服务中的代码是: p

我有一个Silverlight业务应用程序,
Silverlight\u BussApp
。 它有
Silverlight\u-BussApp
项目和
Silverlight\u-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项目的相同解决方案中托管时,它可以正常工作?

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


请尝试使用将您想要的内容保存到客户机,然后告诉他们打开生成的文件。

您是对的。但是我尝试在相同的IIS上托管我的Silverlight_BussApp.Web,但仍然出现错误“找不到文件”。那么,这个问题的解决方案是什么?@newdeveloper您正在采取的方法(通过WCF调用服务器上的
Process.Start
)将不起作用。使用
SaveFileDialog
将文件内容保存到客户端计算机上,然后打开此文件。如果是
.txt
文件,记事本可能会被默认使用我无法使用SaveFile对话框,因为记事本是以代码隐藏方式填充的,需要打开以供最终用户查看。@新开发人员您将无法像您描述的那样“以代码隐藏方式填充记事本”(如果您不是以浏览器外应用程序运行),这根本行不通。看看