0

以下のコードを使用してヘルプファイルを開きますasp.net

protected void lblHelp_Click(object sender, EventArgs e)
{
    string filepath = Server.MapPath(@"VersionControlHelp.chm");    
    Process.Start(filepath);
}

これは私のローカルマシンでは完全に機能しますが、IISサーバーに公開したときには機能しません。IIS変更する必要のある設定はありますか?

4

3 に答える 3

1

Webサーバーを呼び出すProcess.Start()と、コンソールが接続されていないIISアプリケーションプールユーザーのコンテキストで、サーバー上でCHMファイルが開かれます(したがって、何も起こりません)。

これはあなたが望むものではないと確信しています。

クライアントマシンでCHMファイルを開こうとしていると思います。これを行うには、メソッドResponse.Redirect("pathto/yourchmfile.chm")内から呼び出しますlblHelp_Click。これにより、ブラウザはCHMファイルをダウンロードし、ユーザーはそれを開くか(ブラウザの警告が表示される)、保存するかを選択できます。私はそれがあなたが得るのとほぼ同じくらいだと思います。

(ちなみに、Visual StudioにバンドルされているASP.NET開発サーバーは単なるシステムトレイアプリケーションであり、ユーザーのログイン時に読み込まれるため、ローカルで機能します。したがって、これが発行された場合Process.Start()、CHMファイルはユーザーが実行しているコンテキストで開かれます。 Visual Studio、つまりユーザーは、コンソールセッション、つまり画面に接続されています。)

于 2012-10-31T09:10:11.363 に答える
0

Process.Startを実行するには、十分な権限が必要な場合があります。したがって、Webサイトの現在のアプリケーションプールIDを確認する必要があります。これは、サーバーでプロセスを開始するのに十分な権限を持っていますか?

于 2012-10-31T09:04:55.280 に答える
0

これがすでにローカルで機能している場合は、許可またはパスが正しくないことが原因である可能性があります。例外を黙ってキャッチしている場合は、アクセスが拒否された、パスが見つからないなどのエラーが表示されない場合があります。

ファイルがWebアプリケーションのルートにある場合は、これを試すことができます

protected void lblHelp_Click(object sender, EventArgs e)
{
    string filepath = Server.MapPath("~/VersionControlHelp.chm");    
    Process.Start(filepath);
}

また、円記号( )や特殊文字@を使用していなかったため、is記号は必要ありません。\

于 2012-10-31T08:39:19.490 に答える