2011-08-03 121 views
0

我有一個Silvleright業務應用程序,Silverlight_BussApp。 它有Silverlight_BussApp項目和Silverlight_BussApp.Web項目。從Silverlight 4業務應用程序打開記事本

我需要在將代碼填充到代碼後面的按鈕單擊事件後打開記事本。 我不能讓這是一個瀏覽器應用程序。

因此,由於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

對於初學者來說,在Silverlight_BussApp.Web項目中的代碼將被執行服務器上,而在Silverlight_BussApp項目中的代碼會在客戶端上執行。在開發過程中,客戶端和服務器在表面上是同一臺機器 - 當您在Visual Studio中單擊「運行」時,開發Web服務器將在您的機器上啓動並託管您的.Web項目,而Silverlight應用程序在您的瀏覽器中運行。
部署應用程序時,客戶端(即瀏覽器)很可能與服務器(即IIS)位於不同的物理機器上。因此,忽略了IIS可能強加的任何其他安全限制(這可能是您遇到「文件未找到」錯誤的原因),調用Process.Start將啓動記事本與完全不同的計算機上,重新使用。

嘗試使用SaveFileDialog來保存客戶計算機的任何內容,然後告訴他們打開生成的文件。

+0

你說得對。但我試圖在同一個IIS上託管我的Silverlight_BussApp.Web,並且仍然收到錯誤「未找到文件」。那麼這個問題的解決方案是什麼? –

+0

@新開發人員您正在採用的方法(通過WCF調用在服務器上調用Process.Start)不起作用。使用'SaveFileDialog'將文件的內容保存到客戶端計算機上,然後打開這個文件。如果它是'.txt'文件,記事本可能默認使用 – Donut

+0

我無法使用SaveFileDialog,因爲記事本被填充在代碼後面,需要打開以供最終用戶查看。 –

相關問題