Member 13677196 Ответов: 1

В моей программе нет ошибок... Но я не могу понять для состояния корпуса, почему он не заменяется в файле temp1.


пробовать
{

строка templateFile = @"C:\Oneview_MAT\Add\template.html";
строка temp1 = файл.ReadAllText(templateFile);
строка outputFile = @"C:\Oneview_MAT\Add\output.html";
Список< строка> У EnvironmentdetailsList = новый список<строка&ГТ;() { };
EnvironmentdetailsList.Добавить("интеграция ВПО ОВ в SCOM комплект версия");
EnvironmentdetailsList.Add("версия HPE Oneview");
EnvironmentdetailsList.Add("протестированы серверы HPE");
EnvironmentdetailsList.Добавить("испытаны ВПО корпусов ");
Интерфейс IDictionary&ЛТ;строку, строку&ГТ; EnvironmentdetailsDict= новый словарь&ЛТ;строку, строку&ГТ;() { };
Список<строка> У ovversionList = новый список<строка&ГТ;() { };
foreach (var eachitem в EnvironmentdetailsList)
{
если (eachitem.Содержит("версия HPE Oneview"))
{
ВАР ovlist = "";
ВАР соед = impFunctions.getConnectionList();
по каждому элементу (ВАР Con в ConnectionList)
{
var appliancenodeInfo = CallRestApi("https://" + con.oneViewIP + "/rest/appliance/nodeinfo/version", "GET", con.sessionID, con.xApiVersionString);
var data = appliancenodeInfo["softwareVersion"].Метод toString();
ovversionList.Add(данные);
}
if (ovversionList.Count() > 0)
{
ovlist = строка.Join(",", ovversionList);
EnvironmentdetailsDict.Add("HPE Oneview Version", ovlist);
}
еще
EnvironmentdetailsDict.Add("HPE Oneview Version", ovlist);
}
еще если (eachitem.Содержит("протестированные серверы HPE"))
{
ВАР соед = impFunctions.getConnectionList();
var serverlist = "";
Список <строка> В серверлист = новый список<строка&ГТ;() { };
по каждому элементу (ВАР Con в ConnectionList)
{
ВАР allServerHardwareMembers = getAllData (префикса"https://" + кон.oneViewIP + "/отдых/сервер-оборудование", кон)["члены"];
var temp = "";

по каждому элементу (ВАР eachserver в allServerHardwareMembers)
{
temp = eachserver["имя"].Метод toString();
серверлист.Добавить(темп);
}
}
if (serverList.Count() > 0)
{
serverlist = строка.Присоединиться(",", серверлист);
EnvironmentdetailsDict.Add("HPE Servers Tested", список серверов);
}
еще
EnvironmentdetailsDict.Add("HPE Servers Tested", список серверов);

}
еще если (eachitem.Содержит("испытанные корпуса HPE"))
{
ВАР соед = impFunctions.getConnectionList();
Список<строка> У enclosuresList = новый список<строка&ГТ;() { };
ВАР enclosuresData = "";
по каждому элементу (ВАР Con в ConnectionList)
{
var allEnclosureMember3 = getAllData("https://" + con.oneViewIP + "/rest/enclosures", con)["участники"];
var temp = "";

по каждому элементу (ВАР eachenclosure в allEnclosureMember3)
{
temp = eachenclosure["имя"].ToString() + "," + eachenclosure["enclosureType"];
enclosuresList.Добавить(темп);
}
}

if (enclosuresList.Count() > 0)
{
enclosuresData = строка.Join(",", enclosuresList);
EnvironmentdetailsDict.Add("HPE Enclosures Tested", enclosuresData);
}
еще
EnvironmentdetailsDict.Add("HPE Enclosures Tested", enclosuresData);
}
}
по каждому элементу (ВАР я в EnvironmentdetailsDict)
{
строка eachkey = i.Key;
строка eachval = i.Value;
если (temp1.Содержит(eachkey))
{
строковое значение = "output_" + eachkey;
temp1 = temp1.Replace(значение, eachval);
}
еще
{
строковое значение = "output_" + eachkey;
temp1 = temp1.Replace(значение, " ");
}
}

Что я уже пробовал:

я попытался собрать данные в словаре и попытался преобразовать Предыдущее значение в нужное ему значение.Он работает для двух других версий oneview,серверы протестированы, но не работают для корпусов, протестированных в цикле foreach (var i in EnvironmentdetailsDict), но никаких ошибок там нет.только предыдущие данные не заменяются желаемым значением.

1 Ответов

Рейтинг:
1

OriginalGriff

Цитата:
В моей программе нет ошибок... Но...

Компиляция не означает, что ваш код верен! :смеяться:
Подумайте о процессе разработки как о написании электронного письма: успешная компиляция означает, что вы написали письмо на правильном языке - например, на английском, а не на немецком, - а не то, что письмо содержало сообщение, которое вы хотели отправить.

Итак, теперь вы входите во вторую стадию разработки (на самом деле это четвертая или пятая, но вы перейдете к более ранним стадиям позже): тестирование и отладка.

Начните с рассмотрения того, что он делает, и как это отличается от того, что вы хотели. Это важно, потому что это дает вам информацию о том, почему он это делает. Например, если программа предназначена для того, чтобы позволить пользователю ввести число, а затем удвоить его и напечатать ответ, то если бы ввод / вывод был таким:
Input   Expected output    Actual output
  1            2                 1
  2            4                 4
  3            6                 9
  4            8                16
Тогда совершенно очевидно, что проблема заключается в бите, который удваивает его - он не прибавляет себя к себе или умножает его на 2, он умножает его на себя и возвращает квадрат входного сигнала.
Таким образом, вы можете посмотреть на код, и очевидно, что он находится где-то здесь:
private int Double(int value)
   {
   return value * value;
   }

Как только у вас появится идея, что может пойти не так, начните использовать отладчик, чтобы выяснить, почему. Поставить точку останова на строке:
foreach (var eachitem in EnvironmentdetailsList)
и запустите свое приложение. Подумайте о том, что должна делать каждая строка кода перед ее выполнением, и сравните это с тем, что она на самом деле делала, когда вы использовали кнопку "Step over" для выполнения каждой строки по очереди. Он сделал то, что вы ожидали? Если да, то переходите к следующей строке.
Если нет, то почему? Чем это отличается?

Это навык, и его стоит развивать, поскольку он помогает вам как в реальном мире, так и в развитии. И, как и все навыки, он только улучшается при использовании!


Member 13677196

Я уже отладил свою программу ...я не дурак, чтобы задавать такие вопросы.постарайся понять квестин а потом помоги мне

OriginalGriff

И что же вам показал отладчик?