在ASP.NET MVC中处理文件

时间:2019-04-05 05:48:08

标签: c# asp.net asp.net-mvc file

我正在一个ASP.NET MVC项目中,该项目将输入代码编译为.exe文件。然后,我的代码运行此.exe。成功之后,我只是删除该.exe文件。

要发布输入代码,我正在使用CSharpCodeProvider类。要运行它,我正在使用Process类。

制作和删除exe文件对我来说似乎有些棘手,因为在调试程序时无法将文件直接保存到项目目录中。我需要给IIS_USERS赋予特殊权限。但是,当我想将项目发布到生产环境中时该怎么办?如何处理文件路径?在哪里保存呢?

现在,它看起来像这样:

string exeName = Path.Combine("C:\\Users\\User\\source\\repos\\proj\\solution\\obj\\Debug", "test.exe");

2 个答案:

答案 0 :(得分:3)

要处理路径,您应该使用Server.MapPath("~")-这会将物理路径返回到Web应用程序的根。

例如,如果解决方案中有一个名为“ MyOutput”的文件夹(与Controller,Views等文件夹平行),则可以编写Server.MapPath("~/MyOutput/")。这将解析为诸如C:\Users\User\source\repos\proj\solution\MyOutput\

的物理路径

这样,您不必费心更改本地计算机或Web服务器中的路径。 另外,您不应该将与Web应用程序不直接相关的内容放入Obj或Bin文件夹中。

此处有更多示例:Server.MapPath("."), Server.MapPath("~"), Server.MapPath(@"\"), Server.MapPath("/"). What is the difference?

答案 1 :(得分:1)

询问用户将其保存在何处?

您可能具有要求输入此路径,用户名,密码等的表单。甚至在配置<appSettings></appSettings>

然后,您可以使用Impersonate保存它,执行它而不会出现任何权限问题。您可以使用它来将其保存在本地或任何网络驱动器上