繁体   English   中英

从ASP.NET应用程序执行过程时的目录注意事项?

[英]Directory considerations when executing a process from an ASP.NET app?

我有一个ASP.NET Web角色,该角色在调用特定Controller方法时生成的声音文件上运行音频效果实用程序。 我完全了解如何使用Process对象执行流程,设置工作目录,等待退出以及检查退出代码。

这是我的具体问题:

  • 如果我在ASP.NET项目的一个文件夹中拥有EXE文件及其依赖项,那么在将Web角色发布到Azure时,我需要怎么做才能将它们放置在非公共目录中? 还是将它们作为已发布软件包的一部分复制到网站上? 如果是这样,我如何获得EXE文件的最终位置? 我以为我只是无法通过简单的“ //.exe”路径引用EXE。 换句话说,我需要知道如何处理EXE文件和相关性(如果有的话),以便它可以正确运行,并且还需要知道在发布的目录结构中可以找到它的位置,以便可以将该信息传递给流程对象的StartInfo属性。

  • 我需要进行任何web.config文件更改还是为了进行此操作而需要更改目录权限设置吗?

注意:由于扩展性和超时问题,我知道从ASP.NET线程运行进程的注意事项:

从ASP.NET启动新过程

但是,大多数时候不需要运行该实用程序,因为Controller方法返回的大多数声音文件已经生成,并且已从数据库的BLOB字段中提取。 另外,我已经安排了转换时间,使用单个内核在最坏的情况下运行大约需要200到500毫秒。

一种方法是:

  1. 将您所有的EXE和相关文件放到文件夹中(让我们说“ MyFolder”)
  2. 将文件夹作为项目的一部分,以便发布系统像普通文件一样将其复制。
  3. 具有以下web.config条目。 这样可以确保没有人可以从外部从URL访问文件。
  4. 在您的代码中,您始终可以使用Server.MapPath来获取要由流程类使用的EXE路径等。
<location path="MyFolder">
     <system.web>
       <authorization>
         <deny users="*"/>
       </authorization>
     </system.web>
</location>

可能还有其他方法可以阻止通过以下方式访问此文件夹:

  1. 网址重写规则,以便仅允许您网站的http_referrers访问它们。 即没有直接的热链接。
  2. http处理程序等

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM