J'ai écrit une page Web ASP.NET avec C# derrière qui exécute un script vb existant. L'idée est que l'utilisateur télécharge une feuille de calcul Excel (.xls) en utilisant la page Web, le C# effectue quelques vérifications de base sur le fichier (type de fichier, nom de fichier, etc.) puis enregistre les fichiers .xls dans un emplacement réseau . Le C# transmet ensuite le chemin réseau du .xls au script vb, qui obtient les informations requises à partir du .xls pour créer un fichier .csv.Appel d'un script vb à partir d'une page Web asp.net/C#
Enfin, le fichier .csv est passé dans une procédure stockée et téléchargé dans une table de base de données.
Le problème est que tout cela fonctionne parfaitement lorsque j'exécute la page Web localement sur ma machine. Cependant lorsque je télécharge la page sur le serveur web, il ne semble pas exécuter le script vb; Au lieu de cela, il attend juste que le script sorte.
Quelques infos rapides:
- Excel est installé sur le serveur Web
- Le site est mis à exécuter des scripts et des exécutables
- Le script est actuellement fixé à «courir comme mon login domaine personnel (cela doit changer) qui a admin sur le serveur web
- Si je lance le script sur le serveur Web en utilisant le cela fonctionne rapidement cmd
J'apprécierais vraiment toutes les idées sur ce qui pourrait mal se passer ... sérieusement, je m'arrache les cheveux et je vais considérer n'importe quelle idée, peu importe comment c'est fou ... mais, et c'est une grosse idée , en dépit du fait que qu'il ya beaucoup d'autres façons d'atteindre le même résultat, je crains que pour un certain nombre de raisons, cela est ce que je dois travailler avec :)
Modifier
Voici comment j'appelle le script
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...
Tous les chemins de fichiers sont relatifs.
Le code semble échouer lorsque le script est appelé. Vous pouvez voir clairement la page en attente de la fin du script. Toutefois, si vous regardez le gestionnaire de tâches sur le serveur Web, ni cscript ni Excel ne commencent à s'exécuter.
J'ai aussi bloqué une boîte de message dès le début du script qui ne s'affiche
pas Edit 2 Il se avère que cscript est en cours d'exécution, je avais juste besoin de cocher les « Tous les utilisateurs 'case à cocher dans le gestionnaire de tâches ... Je ne suis toujours pas le plus sage si!
Merci beaucoup à l'avance
où exactement cela semble-t-il se casser ... comment l'application invoque-t-elle le vbscript, pourriez-vous poster du code à des points clés dans votre fichier? processus. –
Merci pour votre réponse, s'il vous plaît voir mon edit – Kurut