簡體   English   中英

如何在C#中修復InvalidOperationException?

[英]How to fix InvalidOperationException in C#?

我有一個應用程序,其中使用IP地址將PC(其他和自己的)作為服務器添加,並且狀態設置為“正在運行”。 在數據庫中為此創建一個條目。

假設我添加了2個服務器10.51.1.159和10.51.1.136,在刷新時10.51.1.159的狀態為“正在運行”(因為它是本地的),而10.51.1.136的狀態為“錯誤”(因為它是遠程的)。 當我嘗試調試時,將為10.51.1.136拋出以下異常。

遠程服務器引發異常InvalidOperationException System.InvalidOperationException: Cannot open notifyservice service on computer '10.51.1.136'. ---> System.ComponentModel.Win32Exception: Access is denied System.InvalidOperationException: Cannot open notifyservice service on computer '10.51.1.136'. ---> System.ComponentModel.Win32Exception: Access is denied

執行此操作的代碼如下:

static public void GetServerStatus(DataTable dt, string service)
{
    GetServerStatusColumns(dt);

    // get the service status for each server in the datatable
    ServiceController control = new ServiceController();
    foreach (DataRow row in dt.Rows)
    {
        try 
        {
            control.ServiceName = service;
            control.MachineName = row["SERVER_ADDRESS"].ToString();
            string status = control.Status.ToString(); // This is not set for 10.51.1.136, jumped to catch block after this.
            row["SERVICE_STATUS_ID"] = Convert.ToInt32(Enum.Format(control.Status.GetType(), control.Status, "d")) - 1;
            row["SERVICE_STATUS"] = status;

            if (status == "Running")
            {
                row["SERVICE_CANSTART"] = false;
                row["SERVICE_CANSTOP"] = true;
            } 
            else 
            {
                row["SERVICE_CANSTART"] = true;
                row["SERVICE_CANSTOP"] = false;
            }
        }
        catch (InvalidOperationException exp)
        {
            row["SERVICE_STATUS_ID"] =  5; // stopped
            row["SERVICE_STATUS"] = "Error";
            string excep = Convert.ToString(exp);
            row["SERVICE_CANSTART"] = false;
            row["SERVICE_CANSTOP"] = false;
        }
    }
}

我檢查了防火牆是否被阻止,但似乎防火牆不是問題所在。 請幫助我。 提前致謝。

“拒絕訪問”意味着您的應用程序所運行的帳戶沒有權限在另一台計算機上管理該服務?

您在本地帳戶上運行嗎? 然后更改為域帳戶(在另一台服務器上具有權限)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM