現在Process.start()
、ASP MVC サイトのコントローラー メソッドで使用しています。これは小さなイントラネット アプリであるため、設定した基本的なもの以外のセキュリティは大きな問題ではありません。
ユーザーは、LAN 上の共有フォルダーの場所である添付ファイルのファイルパスを入力できます。次に、各アカウントの編集ページが表示されると、ページに添付ファイルへのハイパーリンクが表示されます。ユーザーはハイパーリンクをクリックして、ファイルのコピーやファイルのコピーをダウンロードするのではなく、ファイルを開くことができる必要があります。これにより、編集を行って保存できるようになります。
これに対する私の最初の試みは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
私が使用している方法の修正の方向、または同じ目標を達成するより良い方法の方向に誰かが私を向けることができますか?