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

如果您Process.Start()在 Web 服务器上调用,您将在 IIS 应用程序池用户的上下文中打开服务器上的 CHM 文件,该用户没有附加控制台(因此不会发生任何事情)。

我确定这不是你想要的。

我认为您正在尝试在客户端计算机上打开 CHM 文件。为此,请Response.Redirect("pathto/yourchmfile.chm")从您的lblHelp_Click方法中调用。这将导致浏览器下载 CHM 文件,然后用户可以选择打开它(视浏览器警告而定)或保存它。我认为这与您将得到的差不多。

(顺便说一下,它在本地工作,因为与 Visual Studio 捆绑在一起的 ASP.NET 开发服务器只是一个系统托盘应用程序,在用户登录时加载 - 所以如果这发出 a Process.Start(),CHM 文件将在用户运行的上下文中打开Visual Studio,即您,附加到控制台会话,即您的屏幕。)

于 2012-10-31T09:10:11.363 回答
0

Process.Start 可能需要足够的权限才能运行。所以你需要检查你网站当前的应用程序池标识,这是否有足够的权限在服务器上启动一个进程?

于 2012-10-31T09:04:55.280 回答
0

如果这已经在本地工作,那么可能是因为权限或路径不正确。如果您以静默方式捕获异常,您可能看不到错误,例如 Access denied, Path not found

如果该文件位于您的 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 回答