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>"); 開啟該路徑即可,以瀏覽器的方式開啟檔案所在的資料夾
效果顯示
可以直接讓使用者開啟該檔案所在的資料夾,該方法已測試