[英]Calling a vb script from a asp.net / C# webpage
我已经编写了一个ASP.NET网页,后面带有C#,可运行现有的vb脚本。
这个想法是,用户使用网页上传Excel电子表格(.xls),C#对文件(文件类型,文件名等)进行一些基本检查,然后将.xls保存到网络位置。
然后,C#将.xls的网络路径传递到vb脚本,该脚本从.xls获取所需的信息以创建.csv文件。
最后,.csv传递到存储过程中并上载到数据库表。
问题是,当我在计算机上本地运行网页时,所有这些都可以完美运行。 但是,当我将页面上传到Web服务器时,它似乎没有执行vb脚本。 相反,它只是坐在那里等待脚本退出。
一些快速信息:
我真的很感激关于可能出什么问题的任何想法...认真地说,我正在竭尽全力,不管有多么疯狂,我都会考虑任何想法...但是,尽管有很大的想法,事实上,还有许多其他方法可以达到相同的结果,由于种种原因,我担心这就是我必须使用的方法:)
编辑
这是我所谓的脚本
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正在运行,我只需要在任务管理器中选中“所有用户”复选框即可。不过,我还是一个聪明人!
提前非常感谢
在没有看到代码的情况下,这是一个盲目的猜测-我建议您检查如何指定vb脚本的路径-确保您未使用绝对路径,并且该文件相对于C#页面位于同一位置机器上的服务器。
听起来您正在使用自动化来控制Excel应用程序本身?
一些快速信息:
- Excel安装在Web服务器上
这通常是一个坏主意,因为Excel应用程序不是旨在由服务器自动执行的应用程序。 事情可能会挂起,因为应用程序正在等待用户在对话框中某处的输入。 而且,它不能同时处理多个用户的操作。
如果最终目标是从excel文件中提取数据并将其放置在sql服务器中,则我建议您使用Jet OLEDB提供程序从excel文件中检索数据,无论是从Web应用程序中进行,还是让它将数据输入sql服务器,或让sql服务器直接执行。 如果excel文件中有很多数据,则后者可能是最佳选择
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.