Если физически сайт находится по сетевому пути, например \\server\share\web, то при запуске такого веб-сайта в Visual Studio 2008 (думаю, что при открытии сайта будет то же самое) возникает Exception^
Сам Exception практически никакой полезной информации не дает, но если поразбираться и поотлаживать, то причину можно выяснить:
Класс Bitrix.IO.BXPath имеет статический конструктор, который инициализирует переменную applicationPhysicalPath. В нашем случае, HostingEnvironment.ApplicationPhysicalPath возвратит (после Trim) "\\server\share\web". После этого вызывается функция PreparePath (баг, видимо, в ней), и она возвращает искаженный путь "\server\share\web", который присваивается переменной applicationPhysicalPath. И в результате такого искажения (отсутствует один бэкслэш в начале) в методе Bitrix.IO.BXPath.NormalizePath в самом конце не проходит проверка StartsWith(applicationPhysicalPath, StringComparison.InvariantCultureIgnoreCase) для пути, полученого через MapPath (ибо MapPath возвращает путь с двумя бэкслэшами). Здесь-то и генерируется NotSupportedException.
Цитата |
---|
Ошибка сервера в приложении '/web'. -------------------------------------------------------------------------------- Указанный метод не поддерживается. Описание: Необработанное исключение при выполнении текущего веб-запроса. Изучите трассировку стека для получения дополнительных сведений о данной ошибке и о вызвавшем ее фрагменте кода. Сведения об исключении: System.NotSupportedException: Указанный метод не поддерживается. Ошибка источника: Необработанное исключение при выполнении текущего веб-запроса. Информацию о происхождении и месте возникновения исключения можно получить, используя следующую трассировку стека исключений. Трассировка стека: [NotSupportedException: Указанный метод не поддерживается.] Bitrix.IO.BXPath.NormalizePath(String path) +950 Bitrix.IO.BXPath.ToPhysicalPath(String path) +82 Bitrix.IO.BXSecureIO.FileExists(String srcPath) +134 Bitrix.Services.BXSefUrlManager.HandleBeginRequest(Object source, EventArgs e) +252 System.Web.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +68 System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +75 -------------------------------------------------------------------------------- Информация о версии: Платформа Microsoft .NET Framework, версия:2.0.50727.3053; ASP.NET, версия:2.0.50727.3053 |
Сам Exception практически никакой полезной информации не дает, но если поразбираться и поотлаживать, то причину можно выяснить:
Класс Bitrix.IO.BXPath имеет статический конструктор, который инициализирует переменную applicationPhysicalPath. В нашем случае, HostingEnvironment.ApplicationPhysicalPath возвратит (после Trim) "\\server\share\web". После этого вызывается функция PreparePath (баг, видимо, в ней), и она возвращает искаженный путь "\server\share\web", который присваивается переменной applicationPhysicalPath. И в результате такого искажения (отсутствует один бэкслэш в начале) в методе Bitrix.IO.BXPath.NormalizePath в самом конце не проходит проверка StartsWith(applicationPhysicalPath, StringComparison.InvariantCultureIgnoreCase) для пути, полученого через MapPath (ибо MapPath возвращает путь с двумя бэкслэшами). Здесь-то и генерируется NotSupportedException.