1. 程式人生 > >asp.net 實現開啟檔案所在的資料夾, 本地可以開啟,釋出後點擊按鈕沒有反應的解決辦法

asp.net 實現開啟檔案所在的資料夾, 本地可以開啟,釋出後點擊按鈕沒有反應的解決辦法

            此類情況大概是安全範疇的問題

            確定上傳資料夾的共享,iis  以及電腦帳戶,以及aspnet 等是否有對應的相關許可權

            1.確認ASPNET 賬戶屬於管理員級別

            2.在“服務”裡面找到“IIS Admin”,雙擊,“登入”,勾選“服務與桌面互動”。重啟iis。 
只要這樣設定,不要去模擬administrator使用者來呼叫iis方法了,使用匿名訪問就可以了。但是為了安全起見,建議還是加上使用者驗證

            3.用webservice 呼叫;

            [WebServiceBinding(ComformsTo=Wsiprofiles.BasicProfile1_1)]

            public class WebService:System.Web.Services.WebService

           {

            [DllImport("shell32.dll")]

           public static extern int ShellExecute(IntPtr hwnd,StringBuilder lpszOp,stringBuilder lpszFile,StringBuilder lpszParams,StringBuilder lpszDir,int FsShowCmd);

           public WebService()

          {

           }

         [WebMethod]

         public void HelloWorld(string text)

           {

          ShellExecute(Intptr.Zero,new StringBuilder("Open"),new stringBuilder(text),null,null,1)   

            }

          }

          呼叫

             WebService ws=new WebService();

              ws.HelloWord("a");

           4. WebService 中方法解釋

               ShellExecute的功能是執行一個外部程式(或者開啟一個已註冊檔案,開啟一個目錄,列印一個檔案等等)並對外部程式有一定的控制。

               引數介紹:《"引數一","引數二","引數三","引數四","引數五","引數六"》

                hWnd{指定父視窗控制代碼}

                Operation{動作,譬如 open,print}

                 FileName:{指定要開啟的檔案或者程式}

                 Paramters:{給要開啟的程式指定引數}

                  Directory:{預設目錄}

                  showCmd(開啟選項)

執行成功會返回應用程式控制代碼,如果返回值<32 表示執行錯誤

 例子:呼叫計算器

             ShellExecute(NULL,"open","calc.exe",Null,Null,SW_SHOWNORMAL)

               呼叫記事本

                 ShellExecute(NULL,"open","NOTEPAD.exe",NULL,NULL,SW_SHOWNO)

 最後的那個引數,為視窗指定可視性方面的一個命令。

  請用下述任何一個常數

  SW_HIDE 隱藏視窗,活動狀態給另一個視窗

  SW_MINIMIZE 最小化視窗,活動狀態給另一個視窗

  SW_RESTORE 用原來的大小和位置顯示一個視窗,同時令其進入活動狀態

  SW_SHOW 用當前的大小和位置顯示一個視窗,同時令其進入活動狀態

  SW_SHOWMAXIMIZED 最大化視窗,並將其啟用

  SW_SHOWMINIMIZED 最小化視窗,並將其啟用

  SW_SHOWMINNOACTIVE 最小化一個視窗,同時不改變活動視窗

  SW_SHOWNA 用當前的大小和位置顯示一個視窗,不改變活動視窗

  SW_SHOWNOACTIVATE 用最近的大小和位置顯示一個視窗,同時不改變活動視窗

  SW_SHOWNORMAL 與SW_RESTORE相同

      方法二

      獲取檔案所在的目錄

      然後轉義

      eg :string text = txt_MH011.Text.Substring(txt_MH011.Text.IndexOf("CAR")).Replace(@"\","/");

            原目錄為"C:\\CAR\\ASP||" 經上述操作後 可以得到 CAR/asp/  路徑

           Response.Write("<script> window.open('" + text + "');</script>"); 開啟該路徑即可,以瀏覽器的方式開啟檔案所在的資料夾

           效果顯示

           可以直接讓使用者開啟該檔案所在的資料夾,該方法已測試