问题是这样的:
环境:windows xp + ASP.Net + C#
我想在客户端调用服务器端的一个执行程序,该执行程序有两个参数,执行后会生成一个结果文件然后自动退出该执行程序
调用执行程序的代码如下:
string par2 = -x";
string par3 = "InFile.Dat";
System.Diagnostics.ProcessStartInfo Info = new System.Diagnostics.ProcessStartInfo();
Info.FileName = "GOTO.exe";
Info.WorkingDirectory = "\\F:\\GOTO";
Info.Arguments = String.Format("\"{0}\" \"{1}\"", par2, par3); Info.CreateNoWindow = false;
Info.Verb = "open";
Info.WindowStyle = System.Diagnostics.ProcessWindowStyle.Normal;
Info.UseShellExecute = true;
System.Diagnostics.Process.Start(Info);在C#环境下运行,能顺利调用这个执行程序并生成结果文件并自动退出
(http://localhost:21863POST http://forum.csdn.net/PointForum/Forum/PostT��如果在浏览器(IE)上用http://127.11.11.11/Sur_Main.aspx运行时(127.11.11.11代表服务器地址),调用了这个执行文件(可以在服务器的任务管理器上看到进程GOTO.exe),但是没有生成结果文件,也不自动退出.这是为什么呢?请各位大虾不吝赐教!
环境:windows xp + ASP.Net + C#
我想在客户端调用服务器端的一个执行程序,该执行程序有两个参数,执行后会生成一个结果文件然后自动退出该执行程序
调用执行程序的代码如下:
string par2 = -x";
string par3 = "InFile.Dat";
System.Diagnostics.ProcessStartInfo Info = new System.Diagnostics.ProcessStartInfo();
Info.FileName = "GOTO.exe";
Info.WorkingDirectory = "\\F:\\GOTO";
Info.Arguments = String.Format("\"{0}\" \"{1}\"", par2, par3); Info.CreateNoWindow = false;
Info.Verb = "open";
Info.WindowStyle = System.Diagnostics.ProcessWindowStyle.Normal;
Info.UseShellExecute = true;
System.Diagnostics.Process.Start(Info);在C#环境下运行,能顺利调用这个执行程序并生成结果文件并自动退出
(http://localhost:21863POST http://forum.csdn.net/PointForum/Forum/PostT��如果在浏览器(IE)上用http://127.11.11.11/Sur_Main.aspx运行时(127.11.11.11代表服务器地址),调用了这个执行文件(可以在服务器的任务管理器上看到进程GOTO.exe),但是没有生成结果文件,也不自动退出.这是为什么呢?请各位大虾不吝赐教!
解决方案 »
- 如何实现在记事本的查找功能
- exe文件打开后不能窗口显示怎么解决?急急急
- WPF用C#如何设置时间控件??
- 添加的DataGridViewCheckBoxColumn,如何触发事件
- XML文件问题,关于节点引用
- 请大侠援助一下.aspx访问远程数据库的问题(net1.1下)
- 令人头疼的问题,注册进去的用户名密码登陆不进去,在数据库直接插入的数据登陆就可以!!为什么啊
- 为什么有的using 命名空间就不行啊
- “Excel.Application.Application()”表示“方法”,它在给定的上下文中无效,是什么原因?
- 帮个忙啦!!高手,同步解析 和 异步解析 的区别在那里??能举个例子说明吗?感激不尽
- .NET开发的程序如果进行性能优化?
- 关于继承问题。。。。
{
process.Kill();
}
process = System.Diagnostics.Process.Start("GOTO.exe");
System.Threading.Thread.Sleep(3000);//等3秒钟,让无界起来
你可以尝试把程序的权限加大,做一下测试~~~
To liuyun1987 : 你的方法试了也不行
是把Net用户权限加大还是把程序的权限加大?可以说详细一点吗?
是把程序的权限加大。
现在也不确认是什么问题。
感觉还是问题还是在权限那里,让你把程序加大,然后测试一下。
我把执行程序(GOTO.exe)所在的目录加了一个"web共享"并加上了"执行(包括脚本)",但是问题还是一样.你所说的"把程序权限加大"是不是这样加呀?
你说的把程序的权限加大,我没明白是什么意思,是把哪个程序的权限加大?是"要调用的可执行程序GOTO.exe"吗?我不知道如何做
我是把 要调用的可执行文件所在的目录"\\F:\\GOTO "目录在"共享与安全"里加了一个"web共享"并加上了"执行(包括脚本)"
你的意思是说:所要调用的执行程序必须放在虚拟目录下吗?生成的结果文件也必须放在同一个虚拟目录下吗?
To boblaw:
我看了一下,在服务器的任务管理器->进程中,当在C#环境中运行时执行程序GOTO.exe所对应的用户是administrator,当在客户端浏览器中调用时执行程序GOTO.exe所对应的用户是AspNet
也许你说的对,我要再试试多谢楼上各位!
我把asp.net用户加到Administrators组,可是问题还是一样,只能在任务管理器中的进程看到所调用的执行程序GOTO.exe,没有生成结果文件.
To 我自横刀香甜笑:
结果文件是生成在虚拟路径下,该路径有写入权限
究竟是哪儿出了问题了?我都无计可施了! 请各位大虾再指点指点
多谢楼上两位(conannb、Dionix),小妹我再试试
但解决权限问题,xp与win2000或win2003等服务器版不一样。
首先,你要解决xp权限管理的模式,取消xp的简单共享,这样你就能为你的文件夹或虚拟目录设置详细的权限。
方法:在文件夹选项中\查看\使用简单共享(推荐)的钩去掉,你再查看文件夹属性时,就多了一个安全选项卡了,,这里你就可以对文件上夹的权限进行详细的设置了。
在IIS中的权限设置方法也同默认时不一样了,winxp默认情况下IIs设置权限只有几个简单的选项,取消简单共享后,其设置方法与服务器版操作系统类似。
注意,让用户System权限设为完全控制。
在试验时也可以让用户EveryOne完全控制。
在客户端通过浏览器调用我的页面时,在服务器的任务管理器->进程中可以看到被调用的执行程序
这说明了什么问题呢?
主要原因是权限问题。
你最好服务器操作系统用服务器版,一来服务器版可以详细设置权限,并能进一步设置服务功能扩展,二来你做的系统总是要放到服务器上的,你在Xp上调试好了的,到服务器上可不一定行。
我原来用.Net2003/J#+SQL+Xp,调试好的东西在Win2003上就是出错。
还有,在.Net目录在应该有个临时目录的权限也要加上去,否则出错,注意可能有.net的调试程序进程被挂起,中止它,并删除临时目录中的文件。(在.net的安装目录下找,好象叫Template,你自己找找)。
我按你说的做了,页面、被调用的执行程序、结果文件都放在同一个虚拟目录下,对该目录把 INTERNET 来宾账户 及 ASPNET账户的权限都设置的足够大(只除了没有最后一个特别的权限),还有这两个账户我都把它加到了Administrators组,
你说的.Net临时目录是这个吧:C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET
Files\temp,对该目录把 INTERNET 来宾账户 及 ASPNET账户的权限都设置的足够大
但还是不行啊
哎,我都快做不下去了,兄弟,救救我吧
要加虚拟目录的。
谢谢!system权限加了,everyone没加到最高,我再试试
WebService我没考虑过,我会试一下
终于把你等来了,不能说没帮上忙,有你的思路及热心我已很感谢!再次感谢楼上各位的热心相助!如果各位想看最后的解决方案,请去看贴子http://topic.csdn.net/u/20071105/11/3aa1faa1-7266-440b-8ebb-2fde3029ea0a.html