是否可以執行服務器端程序並異步獲取輸出。與asp.net mvc4應用程序異步執行服務器端程序
我有這樣的代碼,這樣做的工作,但同步:
假設C#程序「的Program.exe」是這樣的:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace testconsole
{
class Program
{
static void Main(string[] args)
{
for (int k = 0; k < 10; k++)Console.WriteLine(k);
}
}
}
在這樣的asp.net應用中的一些觀點:
<script >
function go()
{
var options = {
url: '/excute',
type: 'GET',
dataType: 'json'
}
//make call
$.ajax(options)
.then(function (data) {
console.log(data);
});
}
</script>
<input type="submit" onclick="go();" value="Go">
和EXCUTE控制器看起來是這樣的:
namespace myApp.Controllers
{
public class ExecuteController : Controller
{
//
// GET: /Execute
[HttpGet]
public JsonResult Index()
{
Process p = new Process();
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.FileName = "program.exe";
p.Start();
string output = p.StandardOutput.ReadToEnd();
p.WaitForExit();
return Json(new { op = output }, JsonRequestBehavior.AllowGet);
}
}
}
這一切都工作正常,但...從客戶端必須等到程序結束顯示其輸出,是否有任何方法來獲得這些輸出,只要他們創建?
即時通訊我需要在控制器做一些變化,使其成爲可能,但如何?
我想使用異步控制器或信號,我不知道* IHttpHandler *直到你提到它。 與異步控制器我有這個問題,如何發送異步響應的Ajax請求? 與signalr它想殺人的錯誤用火箭筒,我認爲它可以做的工作,但成本非常高。 – dafriskymonkey
這應該是一個良好的開端,我想:http://msdn.microsoft.com/en-us/library/bb398986.aspx或者google :-) –
但要知道,你正在嘗試做的是不平凡的。使用SignalR可能是最簡單的方法。 –