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

This topic was automatically closed 365 days after the last reply. New replies are no longer allowed.
12 anni tempo fa
При сохранении изменений в Настройках возникает исключение:
"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);
12 anni tempo fa
Предположу, что вы используется русский пакет с локализацией, и что там видимо есть ошибка в одной из ресурсов. Аналогичкая проблема - https://www.nopcommerce.com/boards/t/15226/when-changing-to-different-language-wishlist-url-does-not-work-result-in-error-page.aspx
12 anni tempo fa
Проверил пакет. Там ошибочный ресурс. 'ActivityLog.EditSettings' должен быть "Изменена настройка", а не "Изменена настройка ('{0}')"
12 anni tempo fa
Верно, используется пакет локализации. Ошибку в файле локализации исправил. Спасибо.
12 anni tempo fa
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}' в нём нет.
12 anni tempo fa
Все работает нормально, только что проверил. Уверен, что ошибка где-то в локализации. Сделайте экпорт вашего языкого пакета и закачайте его куда-нибудь, я проверю.
Кстати, когда вы исправили ту ошибку (месяц назад), ошибка ведь исчезла тогда? Просто никакие из данных файлов ("CustomerActivityService.cs" и "SettingController.cs") не менялись уже несколько месяцев
12 anni tempo fa
Файл локализации: [Deleted]
Но вроде там всё нормально.

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

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

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

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

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 }


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