2016-11-21 4 views
1

私はstackoverflowでこれを行う方法のいくつかの言及を参照しました。Webサービスが実行していないexe

私は、次の参照コードからテストしようとした:私は、ブラウザで以下の私のコードを実行したときに、フレームワーク3.5

VisualStudio2010

https://www.dotnetperls.com/process

How to run .exe file by my Webservice?

VERSIONをクリックすると弾丸が見えます。それをクリックすると何も起こりません。私のexeは単にxmlファイルを探し出し、そこから新しいファイルを作成します。私はexeを実行するWebサービスを使用したいと思います。私のコードに欠けているものはありますか?私が見たバージョンは他にもたくさんありましたが、まだ試してみましたが、まだ運がありませんでした。[0126]

Imports System.Web.Services 
Imports System.Web.Services.Protocols 
Imports System.ComponentModel 
Imports System.IO 

' To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line. 
' <System.Web.Script.Services.ScriptService()> _ 
<System.Web.Services.WebService(Namespace:="http://localhost/")> _ 
<System.Web.Services.WebServiceBinding(ConformsTo:=WsiProfiles.BasicProfile1_1)> _ 
<ToolboxItem(False)> _ 
Public Class Service1 
Inherits System.Web.Services.WebService 

Dim File As String 

<WebMethod()> _ 
Public Sub runExe() 

Dim exe = "C:\WindowsApplication1\bin\Debug\WindowsApplication1.exe" 
    'Dim file = "C:\Test\test.xml" 

    Dim startInfo As New ProcessStartInfo() 
    startInfo.FileName = exe 
    'startInfo.Arguments = file 
    Process.Start(startInfo) 

    'REFERENCE: https://www.dotnetperls.com/process 

End Sub 

私も

ThreadPool.QueueUserWorkItem(Sub() Process.Start("C:\WindowsApplication1\bin\Debug\WindowsApplication1.exe")) 

を使用してcalling .exe from another .exe to run a webserviceを試みたが、exeファイルは、私はexeファイルがに送信フォルダのパスで作成した新しいファイルを見ていない別名実行されませんでした。

も試み:

は私の問題を見つけるために、出力テストを使用するとは思いませんでした:

Dim processInfo = New ProcessStartInfo(exe) 
Dim process__1 = Process.Start(ProcessInfo) 
process__1.WaitForExit(5000) 
Dim exitCode = process__1.ExitCode 
process__1.Close() 
Return 

何も

UPDATEが起こっていません。私は、次のように使用:あなたのコメントに応えて

While Not process__1.StandardOutput.EndOfStream 
    Dim line As String = process__1.StandardOutput.ReadLine() 
End While 
+0

'WindowsApplication1.vshost.exe'? 'WindowsApplication1.exe'を実行するつもりはありませんか?また、アプリケーションが実行されていないことを確認するためにデバッグを行うことはできますか?デバッグ出力がアプリケーションに含まれる可能性がありますか?ここでプロセスを呼び出すときにプロセスの出力を読み込みますか?それはあなたがキャプチャしていない、またはあなたのテストがあなたが思っていることをやっていないという正当な理由で失敗する可能性が高いようです。 – David

+0

はい、タイプミスでした。私はプロセスの出力を作成する方法を検討します。 @David – narue1992

+0

また、これは明白かもしれませんが、多くの人がこの問題を抱えているので、質問する価値があります。このアプリケーションが*サーバー*または*クライアント*で動作することを期待していますか? – David

答えて

1

...

だけでなく、私はexeファイルを実行するには、このサービスと通信するために私のasp.netアプリケーションを使用することを計画しています。だから私はクライアントと思うだろう

これは、Webアプリケーションのしくみの誤った理解です。サーバー側のASP.NETコード(VBパーツ)は、ちょうどそのようなものです。サーバー側です。そのコードはすべてWebサーバー上で実行されます。ブラウザ/クライアント/ etc。それについての知識はない。

(一瞬あなたが訪問任意のウェブサイトは、任意に、彼らはあなたのコンピュータにしたい任意の.NETのコードを実行する可能性の世界を想像してみてください。楽しいような音はありません。)

をあなたはクライアントを実行する場合アプリケーションをダウンロードするためのリンクなど、アプリケーションをクライアントに送信し、基本的にはそのアプリケーションを実行するように要求する必要があります。サーバー側のコードでは、クライアントのコンピュータ上でアプリケーションを自動的に実行することはできません。

+0

アプリケーションによって使用されるならば、webservicesは通常サーバサイドになるだろうか? – narue1992

+0

私はまた、次のテストコード 'While Not process__1.StandardOutput.EndOfStream 'を使って何かを行います。 Dim line As String = process__1.StandardOutput.ReadLine() End While'そして実際には私は間違ってマッピングしていましたロケーション。私は新しい場所を救ったが、私の問題だったその新しい場所には再建しなかった。 – narue1992

+0

@ narue1992:Webサービスはサーバー側です。名前はそれを暗示しています。それはウェブ上に公開されたサービスです。 Webアプリケーションの仕組みに関する基本的な誤解があるようです。 – David

関連する問題