【问题标题】:asp.net c# working with iis express but not with iis localasp.net c# 使用 iis express 但不使用 iis local
【发布时间】:2020-06-29 14:50:48
【问题描述】:

我正在使用 asp.net 和 c# 我想要做的是更改标签“颜色”并在单击按钮时运行记事本。 当我在visual studio(iis express)中测试它时,一切正常,但是当我在iis local中运行它时,标签变为红色,但记事本无法运行。我做错了什么?

protected void Button1_Click(object sender, EventArgs e)
{
Label1.BackColor = System.Drawing.Color.Red;
System.Diagnostics.Process.Start("C:/Windows/System32/notepad.exe");
}

【问题讨论】:

  • 尝试运行外部进程时是否出错?这是一个奇怪的设置,因为当客户端和服务器是同一台机器时,这显然只会产生有意义的结果(打开记事本)。当部署到任何实际服务器时,客户端永远不会看到应用程序启动。
  • 没有错误。标签在 iis local 上变红,但记事本打不开
  • 可能是web服务器默认没有执行其他应用的权限。 (因为它通常不需要,并且保持开放将是一个不必要的安全漏洞。)我希望这会产生一个异常。我想可能是这样,也许您根本没有有效地看到它?退后一步,这里的目标是什么?使用网络服务器打开记事本……很奇怪。也许你一开始就走错了路,但在不知道意图的情况下很难确定。
  • 呵呵呵呵,我要做的不是打开记事本,只是一个例子。我想要做的是将 udp 数据发送到 arduino,但我现在没有,所以我认为尝试运行应用程序会给我一个“视觉”结果
  • IIS 上的服务器只有 GUEST 权限,不能运行任何应用程序或访问 IIS 上的 c: 驱动器。如果它在 Express 上运行,您必须以管理员身份运行应用程序

标签: c# asp.net iis


【解决方案1】:

这是因为当您在 IIS Express 中运行应用程序时,整个应用程序都在您的当前登录用户下运行。但是,当您将应用程序迁移到 IIS 时,所有操作都在 应用程序池标识 下执行。默认情况下,应用程序池标识(IIS apppool\apppoolname)无权访问 C:/Windows/System32/notepad.exe。 因此您可以尝试将应用池标识设置为本地系统。如果可行,那么您可以将身份替换为您自己的用户。

【讨论】:

    猜你喜欢
    • 2017-06-13
    • 2012-07-16
    • 2016-04-25
    • 2021-10-25
    • 1970-01-01
    • 1970-01-01
    • 2016-12-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多