【问题标题】:Webservice on IISIIS 上的 Web 服务
【发布时间】:2010-06-06 17:20:18
【问题描述】:

我有一个网络服务和一个网络表单。一个按钮调用从 pid 读取给定进程名称的 web 服务。这在 VS2008 中运行良好,但是当我发布我的项目时,我没有得到名称?如何配置 IIS 以允许我这样做?还是有其他方法,即 wcf 或 wwf?

编辑:

使用 System.Diagnostics; [网络方法] 公共字符串 GetProcessName() { 进程进程 = Process.GetProcessById(1428); 字符串 ProcessTitle = Process.MainWindowTitle; 返回进程标题; }

我使用 tasklist.exe /v 来获取具有窗口标题的进程的 pid。

【问题讨论】:

  • 查看 windows 事件中的任何异常。可能存在授权问题。当您从 VS 运行代码时,它是调用操作系统上的用户。但在 IIS 上,用户将是 ASPNET。 ASPNET 可能无权运行特定代码。在这样的代码中,您可能会在安全或应用程序事件中遇到异常。

标签: c# asp.net iis web-services webforms


【解决方案1】:

给定您的代码:

  • 你怎么知道有一个 PID = 1428 的进程??
  • 如果该进程不存在会怎样?

如果你查看这行代码:

Process process = Process.GetProcessById(1428);

将返回NULL,然后你从...... NULL 中获取.MainWindowTitle ......这是保证导致异常......

using System.Diagnostics;

[WebMethod]
public string GetProcessName()
{
   string processTitle = string.Empty;

   Process process = Process.GetProcessById(1428);

   if(process != null)
   {     
      processTitle = process.MainWindowTitle;
   }

   return processTitle;
}

即便如此 - 再说一遍:你怎么知道 ID = 1428 的进程存在??

【讨论】:

  • 我使用 tasklist.exe /v 来获取具有窗口标题的进程的 pid。我在代码下提到了这一点。 1428 是我的 chrome 浏览器(google.com),所以我确定它会退出:p
【解决方案2】:

我不敢相信,当我将我的项目部署到 Abyss 网络服务器时,它就像一个魅力。 总之谢谢大家。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-07
    • 1970-01-01
    • 1970-01-01
    • 2020-05-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多