[英]How can I generate a downloadable c# class from within an ASP.NET MVC website?
[英]ASP.NET C# MVC Website, how can I mount a drive upon button click?
我願意解決這個問題。 我懷疑最好的方法是向控制器提交要安裝的路徑,然后控制器將傳回一個本地運行的python腳本並安裝路徑。 稍后我們可能需要驗證Active Directory權限,但這是另一個問題。 我們可以按照自己的意願配置所有客戶端和服務器,因此我們應該能夠允許mount腳本在下載后運行。 只關心安裝在Windows上,但mac是可選的。 我主要擔心的是如何讓服務器發送腳本並讓客戶端運行腳本,如果這是滿足這種必要性的正確方法; 第二個問題是我如何形成訪問任意任意遠程服務器共享的路徑,第三個問題是首先檢查權限。 任何幫助贊賞。
public ActionResult ProjectMountSubmit(string project_path, int project_number) {
//Send mount script to user and make him run it
return RedirectToAction("Project", "Home", new { ProjectNumber = project_number });
}
最終答案將腳本提交給瀏覽器。 用戶還可以設置瀏覽器自動打開它,還必須安裝python並將其與.py文件關聯,以便快速雙擊運行。 不確定該腳本/ python mime是否有效但它是否有效。 改進可能包括使用razor修改python腳本,以便它不是所有內部引號,失去顏色編碼。 請注意,您必須遞歸兩次轉義斜杠,一個用於文件流,另一個用於下載和運行的腳本。
public ActionResult ProjectMountSubmit(int project_number, string drive_letter) {
ProjectsBAL b = new ProjectsBAL();
Projects c = b.GetProject(project_number);
//generate python mount script
string script = "import ctypes\n" +
"import subprocess\n" +
"import os\n" +
"command = 'net use " + drive_letter + ": \\\\\\\\MSI\\\\Users\\\\gunslingor\\\\Desktop\\\\Storage\\\\" + c.CompanyName + "\\\\Clients\\\\" + c.ClientName + "\\\\" + c.ProjectNumber + "_" + c.ProjectName + "'\n" +
"returned = subprocess.Popen(command, shell = True, stdout = subprocess.PIPE, stderr = subprocess.PIPE)\n" +
"cmd_err_lines = returned.stderr.readlines()";
var stream = new MemoryStream();
StreamWriter writer = new StreamWriter(stream);
writer.Write(script);
writer.Flush();
stream.Position = 0;
//Send mount script to user, double click to run (python must be installed and associated to the file type py)
return File(stream, "script/python", "Automount.py");
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.