我目前Process.start()
在我的 ASP MVC 站点中使用控制器方法。这是一个小型 Intranet 应用程序,因此我们设置的基本内容之外的安全性不是主要问题。
用户将能够输入附件的文件路径,即我们局域网上共享文件夹的位置。然后,当打开每个帐户的编辑页面时,该页面将显示指向附件的超链接。用户应该能够单击超链接并打开文件,而不是文件的副本或下载文件的副本,以便他们可以进行和保存编辑。
我的第一次尝试是创建以下内容ActionLink
,将文件的位置发送到控制器。
<div class="M-editor-label" style="width: 400px;word-wrap: break-word;">
@Html.ActionLink(Model.Attachment, "OpenAttachment", "BankListMaster", new { location = Model.Attachment }, new { @target = "_blank" })
</div>
然后控制器使用Process.Start()
像这样打开文件
public void OpenAttachment(string location)
{
try
{
EventLog.WriteEntry("Monet", "Inside OpenAttachment |URL| " + location);
Process proc = new Process();
proc.StartInfo = new ProcessStartInfo(location);
proc.Start();
}
catch (Exception ex)
{
EventLog.WriteEntry("Monet", ex.StackTrace);
}
}
当我在本地测试时这工作正常,但服务器没有安装 Office 的副本,所以我在catch
块中收到此错误:
No application is associated with the specified file for this operation. at
System.Diagnostics.Process.StartWithShellExecuteEx(ProcessStartInfo startInfo)
at System.Diagnostics.Process.Start()
at Monet.Controllers.BankListMasterController.OpenAttachment(String location) in
C:\Projects\sym_Monet_INT\Monet\Controllers
谁能指出我正在使用的方法的修复方向或可以实现相同目标的更好方法的方向?