2016-03-31 7 views
-1

以下のコードはVisual Studioのデバッグでは問題なく動作しますが、IISサーバーに公開すると機能しません。ただ何も起こりません。私はいくつかのセキュリティ問題を推測しています。質問は、新しいウィンドウまたはタブでURLを開くSystem.Diagnostics.Process.Startの代替があるかどうかです。またはProcess.StratをIISで動作させる方法 おかげasp.netハンドラファイルから新しいブラウザウィンドウを開くには?

public void ProcessRequest(HttpContext context) 
    { 
     Context = context; 
     if (context.Request.QueryString["path"] == null) 
     { 
      return; 
     } 
     string path = Context.Server.UrlDecode(Context.Request.QueryString["path"]); 

     var item = DataServer.GetItem(path); 
     if (item == null) return; 

     System.Diagnostics.Process.Start(item["sourcePath"].ToString()); 
} 
+5

あなたは_client-side_コードと_server-side_コードの違いを理解する必要があります。あなたはそれをすることはできません。 – SLaks

+0

あなたは質問と問題を理解していません。このコードはデバッグで機能します。 –

+1

@ ZuluZデバッグ時にサーバーとクライアントが同じマシンであるため、デバッグで動作します。 – vesan

答えて

1

あなたのファイルは、サーバー側で開かれていると、クライアントが何を見ていない理由です。クライアントがドキュメントを開くには、レスポンスを作成し、レスポンスにファイルの内容を書き込み、ContentTypeプロパティにmime typeを指定する必要があります。そうすれば、クライアントのブラウザは、そのドキュメントを開くためにどのプログラムを使うかを知ることができます(例えばContentType "application/pdf"はAcrobatで開き、 "application/msword"はMicrosoft Wordなどで開きます)。

参照:ASP.NET file download from server そしてhttp://www.sitepoint.com/web-foundations/mime-types-summary-list/

+0

良い例、ありがとう、しかし、私はファイルをIEで開かれたURLを開く場合はどうすればいいですか? –

+0

コンテンツの配置は、添付の代わりにインラインにする必要があります。その場合、IEは外部アプリケーションを呼び出すのではなくブラウザにそのMIMEタイプを正しく表示するためのプラグインが必要です。 – derloopkat

+0

問題は私がファイルを開くが、aspxページを開きたくないということです。 –

関連する問題