asp.net 实现打开文件所在的文件夹, 本地可以打开,发布后点击按钮没有反应的解决办法

当ASP.NET应用在本地能打开文件夹但在发布后失效,可能是安全权限问题。确保ASPNET账户拥有管理员权限,IIS服务允许交互,并检查文件夹权限。使用WebService调用ShellExecute方法可以打开文件夹,注意参数配置。另外,通过获取文件路径并转义,可以使用浏览器方式打开文件夹。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

            此类情况大概是安全范畴的问题

            确定上传文件夹的共享,iis  以及电脑帐户,以及aspnet 等是否有对应的相关权限

            1.确认ASPNET 账户属于管理员级别

            2.在“服务”里面找到“IIS Admin”,双击,“登录”,勾选“服务与桌面交互”。重启iis。 
只要这样设置,不要去模拟administrator用户来调用iis方法了,使用匿名访问就可以了。但是为了安全起见,建议还是加上用户验证

            3.用webservice 调用;

            [WebService(Namespace=http://tempuri.org/)]

            [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>"); 打开该路径即可,以浏览器的方式打开文件所在的文件夹

           效果显示

           可以直接让用户打开该文件所在的文件夹,该方法已测试

 

            

           

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值