понедельник, 18 июня 2007 г.

XSP под Windows и домашняя папка с не латинскими символами

В XSP сегодня обнаружилась проблема:
Если логин пользователя содержит не латинские символы, то и его домашняя папка тоже будет называться соответственно.

В папке типа
%USERPROFILE%\Local Settings\Temp\%USERNAME%-temp-aspnet-0\%хеш?%\
лежат сборки страничек с именами вроде %хеш?%.dll

У меня пользователь имел логин 'Тестер', файловая система FAT32 (мне кажется, что это может иметь значение).

По умолчанию для чтения строки пути используется кодировка utf8, и XSP показывает нам исключение, например:
Compiler failed to produce the assembly. Stderr='', Stdout='[Invalid UTF-8]
Cannot determine the text encoding for argument 5 (/out:C:\Documents and Settings\\xd2\xe5\xf1\xf2\xe5\xf0\Local Settings\Temp\\xd2\xe5\xf1\xf2\xe5\xf0-temp-aspnet-0\ced5b792\14fbad89.dll).
Please add the correct encoding to MONO_EXTERNAL_ENCODINGS and try again.

Из сообщения об ошибке видно, что с русскими буквами в пути проблема.
Причем сборки в ожидаемом каталоге действительно не появлялось, хотя подпапки создавались.
Поискав варианты наткнулся на возможность такой настройки переменной среды (выкрутасы с конкретными кодировками мне не помогли):
MONO_EXTERNAL_ENCODINGS=default_locale
и действительно, сборка стала происходить, но появилась другая проблема - сборка не загружается:
Could not load file or assembly 'C:\Documents and Settings\Тестер\Local Settings\Temp\Тестер-temp-aspnet-0\ced5b792\3bc07a97.dll' or one of its dependencies. The system cannot find the file specified.

А при пользователе по-английски - все работает!
Поиск решения продолжается....

Комментариев нет: