从asp.net/C#网页调用vb脚本
我已经编写了一个运行现有vb脚本的C#后面的ASP.NET网页。从asp.net/C#网页调用vb脚本
想法是用户使用网页上传Excel电子表格(.xls),C#对文件(文件类型,文件名等)进行一些基本检查,然后将.xls保存到网络位置。
然后,C#将.xls的网络路径传递给vb脚本,该脚本从.xls获取所需的信息以创建.csv文件。
最后将.csv传递到存储过程并上载到数据库表中。
问题是,当我在我的机器上本地运行网页时,所有这些运行都很完美。但是,当我将页面上传到网络服务器时,它似乎没有执行vb脚本;相反,它只是坐在那里等待脚本退出。
一些快速的信息:
- Excel中安装了Web服务器
- 网站设置为执行脚本和可执行文件
- 脚本当前设置为“运行为”我的个人域名注册上(这有可能改变),它具有Web服务器
- 上管理员如果我运行使用命令提示符它的工作原理
我真的很感谢任何关于可能出现问题的想法......认真地说,我把我的头发放在这一张上,并会考虑任何想法,不管它有多疯狂......但是,这是一个很大的想法,尽管有实现相同的结果的其他许多方面,恐怕对于多种原因,这是我有:)
编辑
这里是为了工作我如何调用脚本
try
{
System.Security.SecureString password = new System.Security.SecureString();
string uspw = "mypassword";
foreach (char c in uspw)
{
password.AppendChar(c);
}
Process scriptProc = new Process();
scriptProc.StartInfo.FileName = @"cscript";
scriptProc.StartInfo.Arguments = scriptPath + " //Nologo " + uploadPath + xlsFileName;
scriptProc.StartInfo.WindowStyle = ProcessWindowStyle.Minimized;
scriptProc.StartInfo.UserName = "myusername";
scriptProc.StartInfo.Password = password;
scriptProc.StartInfo.UseShellExecute = false;
scriptProc.Start();
scriptProc.WaitForExit();
scriptProc.Close();
}
catch...
所有的文件路径都是相对的。
当脚本被调用时,代码似乎失败。您可以清楚地看到等待脚本完成的页面。但是,如果您在Web服务器上观看任务管理器,则不会开始运行cscript或excel。
我也坚持一个消息框,就在这没有得到显示的脚本开始
编辑2 事实证明,CSCRIPT运行,我只需要勾选“所有用户'任务管理器中的复选框...我依然没有明智的!
感谢这么多提前
听起来像你正在使用自动化来控制Excel应用程序本身?
一些快速的信息:
- Excel中安装了Web服务器
这通常是一个坏主意的,因为Excel应用程序是不是打算申请被服务器自动化。事情可能会挂起,因为应用程序正在等待某个对话框中的用户输入。而且它不能同时处理来自多个用户的操作。
如果最终目标是从excel文件中提取数据并将其放入sql服务器,我宁愿建议您使用Jet OLEDB提供程序从Excel Web应用程序中检索数据,并让数据进入sql服务器,或让sql服务器直接执行。如果在excel文件中有很多数据,后者可能是最好的选择
在没有看到代码,这是一个盲目的猜测 - 我建议你查一下你是如何规定的VB脚本路径 - 确保你没有使用绝对路径,那该文件与您的计算机上的C#页面位于相同的位置。
感谢您的回复,请参阅我的编辑 – Kurut 2009-10-19 11:43:22
究竟是在哪里看起来会破坏......应用程序如何调用vbscript,您可以在您的关键点张贴一些代码处理。 – 2009-10-19 11:04:34
感谢您的回复,请参阅我的编辑 – Kurut 2009-10-19 11:42:47