Исключение при сохранении Настроек

This topic was automatically closed 365 days after the last reply. New replies are no longer allowed.
Il y a 12 ans
При сохранении изменений в Настройках возникает исключение:
"Index (zero based) must be greater than or equal to zero and less than the size of the argument list."

Проблема в файле: Libraries\Nop.Services\Logging\CustomerActivityService.cs
Решением может быть:

158: comment = CommonHelper.EnsureNotNull(comment);
159: if (commentParams.Count() > 0)
160:     comment = string.Format(comment, commentParams);
161: comment = CommonHelper.EnsureMaximumLength(comment, 4000);
Il y a 12 ans
Предположу, что вы используется русский пакет с локализацией, и что там видимо есть ошибка в одной из ресурсов. Аналогичкая проблема - https://www.nopcommerce.com/boards/t/15226/when-changing-to-different-language-wishlist-url-does-not-work-result-in-error-page.aspx
Il y a 12 ans
Проверил пакет. Там ошибочный ресурс. 'ActivityLog.EditSettings' должен быть "Изменена настройка", а не "Изменена настройка ('{0}')"
Il y a 12 ans
Верно, используется пакет локализации. Ошибку в файле локализации исправил. Спасибо.
Il y a 12 ans
nopCommerce v2.50

Ошибка продолжает повторяться при редактировании в разделе "Все настройки".
Причина в том, что при вызове перегруженного метода
public virtual ActivityLog InsertActivity(string systemKeyword, string comment, params object[] commentParams)

аргумент commentParams получает значение object[0], а string.Format в строке 159 этого не понимает.

Предлагаю сделать что-то типа:

158 comment = CommonHelper.EnsureNotNull(comment);
159    if (commentParams.Count() > 0)
160        comment = string.Format(comment, commentParams);
161 comment = CommonHelper.EnsureMaximumLength(comment, 4000);


[Updated] Файл локализации используется, но ошибки с '{0}' в нём нет.
Il y a 12 ans
Все работает нормально, только что проверил. Уверен, что ошибка где-то в локализации. Сделайте экпорт вашего языкого пакета и закачайте его куда-нибудь, я проверю.
Кстати, когда вы исправили ту ошибку (месяц назад), ошибка ведь исчезла тогда? Просто никакие из данных файлов ("CustomerActivityService.cs" и "SettingController.cs") не менялись уже несколько месяцев
Il y a 12 ans
Файл локализации: [Deleted]
Но вроде там всё нормально.

У меня всё работало видимо потому, что я в своей версии всёже сделал то, что предлагал выше.
Il y a 12 ans
TrioN wrote:
Файл локализации: http://buy69.ru/ru_250.zip

Файл не найден

TrioN wrote:
У меня всё работало видимо потому, что я в своей версии всёже сделал то, что предлагал выше.

Так все верно. Если локальный ресурс создан верно, то все будет работать без ошибок
Il y a 12 ans
По моему это всё таки ошибка. Ноги растут из выше стоящего перегруженного метода:

135 public virtual ActivityLog InsertActivity(string systemKeyword, string comment)
136 {
137     return InsertActivity(systemKeyword, comment, new object[0]);
138 }

string s = string.Format("Test {0}", new object[0]);

вернёт как раз этот эксепшен. Правильно будет что-то типа того:

135 public virtual ActivityLog InsertActivity(string systemKeyword, string comment)
136 {
137     return InsertActivity(systemKeyword, comment, new object[] {String.Empty});
138 }


Тогда проверку использовать не нужно.
Il y a 12 ans
Да нет тут никакой ошибки. У всех все работает хорошо. Единственная ошибка, которая тут может быть - это пакет локализации с ошибочными ресурсами (например, использование '{0}' там где этого быть не должно).
This topic was automatically closed 365 days after the last reply. New replies are no longer allowed.