運用環境:Windows Server 2016 Standard / IIS Ver10.0 / ASP.NET 4.0
Process.Startにより サーバ上の目的の実行ファイルを起動できない、というありがちな話題です。
Windows Server 2016 Standard / IIS Ver10.0に移行したら動かなくなった、と言う問題ではなく
初めてASP.NETの稼働環境内でBATファイルを起動したい、というスタンスでご支援を頂けたら幸いです。
teratail含め 記事を模索したのですが 理解力が乏しく対策が分からなかったので掲載させて頂きました。
【質問】
どういった対策をほどこせば Process.Startに引数を与えたバットファイルは 動作するようになりますか?
動作させたいバットファイルのパスは通っていることを確認しています。
『自分が疑ったこと』
手元のWeb.configに 前任者が記載しただろう 以下の定義があるがダメ=batファイル内部に記載している実行ファイルは起動に至っていない認識(その実行ファイルはログを吐くタイプのものだが ログファイルが吐かれていない)
config
1<identity impersonate="true" userName="XXXXX\XXXXXXXX" password="XXXXXXXXXXX"
(この定義は ASP.NETのワーカープロセスを偽造するものでしょうか)
当該batファイルのプロパティ:セキュリティタブで 何か特殊なユーザを追加すべきでしょうか?
標準出力があるタイプのファイルはクライアントから起動できない、という問題なのでしょうか?
よろしくお願いします。
2020.07.18 08:34 追記 【Process.Start実行部分 と バットファイルの中身』
起動したいバットファイルにパスが通っているハズ、という判断は 以下で存在チェックを行った上で Process.Startを行っているためです...
こちらが記述されているのは ajaxToolkitのAsyncFileUploadコントロールのUploadedCompleteイベント内です。
VB
1Dim startupScript As String 2Dim savepath As String = Server.MapPath("./") 3If File.Exists(savepath & "T_LOTINFO.bat") Then 4 Process.Start(savepath & "T_LOTINFO.bat") 5 System.Threading.Thread.Sleep(2000) 6 startupScript = "<script language='JavaScript'> confirm('アップロードが完了しました。') <" + "/script>" 7 ClientScript.RegisterStartupScript(Me.GetType(), "key1", startupScript) 8Else 9 startupScript = "<script language='JavaScript'> alert('これはダメかも知れないね....') </script>" 10 ClientScript.RegisterStartupScript(Me.GetType(), "key1", startupScript) 11End If
バットファイル中身、この一文です。
Webサーバ上で手動でこちらを動作させると起動し、SQLLDR.exe特有のログファイルが このバットファイル配置環境(同じパス)に仕上がってきます。ちなみに、以下のバットファイルの初めに pause入れて試しましたが コマンドプロンプトの画面が立ち上がってくることはありませんでした。
Webページから起動された場合は ログファイルが出力されないので 起動していない、という判断をしています。
bat
1SQLLDR USERID=XXXXX/XXXXXX@XXX, CONTROL=T_LOTINFO.ctrl
回答1件
あなたの回答
tips
プレビュー