2010-12-13 5 views
0

В настоящее время мы пытаемся локализовать наш довольно обширный модуль и использовать один resx (для удобства управления). Мы создали следующий код, который возвращает ключи однако он оставляет нас с сообщением журнала в средстве просмотра событий (ниже кода)Относительный виртуальный путь «x.resx» здесь не разрешен

Я также должен добавить, что я не могу использовать httpcontext.current.server.mappath, поскольку функции также используются там, где нет httpконтекста

Код:

Public Shared Function GetString(ByVal key As String, ByVal ParamArray params As String()) As String 
      Dim SharedResourceFolder As String = "~/App_GlobalResources/" 
      Dim myStr As String = Nothing 
      If CultureInfo.CurrentCulture.Name <> "en-GB" Then 
       myStr = Localization.GetString(key, SharedResourceFolder & "Resources." & CultureInfo.CurrentCulture.Name & ".resx") 
       If myStr Is Nothing OrElse myStr = "" Then 
        myStr = Localization.GetString(key, SharedResourceFolder & "Resources." & CultureInfo.CurrentCulture.Name.Substring(0, 2) & ".resx") 
       End If 
      End If 

      If myStr Is Nothing OrElse myStr = "" Then 
       myStr = Localization.GetString(key, SharedResourceFolder & "Resources.resx") 
      End If 

      If myStr IsNot Nothing AndAlso myStr <> "" Then 
       Return String.Format(CultureInfo.CurrentCulture, myStr, params) 
      End If 
      Dim res As String = Localization.GetString(key, "Resources.resx", "en-GB") 
      If String.IsNullOrEmpty(res) Then 
       Return Nothing 
      End If 
      Return String.Format(CultureInfo.InvariantCulture, res, params) 
     End Function 

Ошибка Сообщение:

System.ArgumentException: Относительный виртуальный путь 'sharedresources.resx' является не допускается. в System.Web.VirtualPath.FailIfRelativePath() в System.Web.Hosting.HostingEnvironment.MapPathActual (виртуальный_путь виртуальный_пути, Boolean permitNull) в System.Web.Hosting.HostingEnvironment.MapPathInternal (виртуальный_пути виртуальный_пути) в системе .Web.Hosting.HostingEnvironment.MapPath (виртуальный_путь виртуальный_путь) при System.Web.Hosting.HostingEnvironment.MapPath (String виртуальный_путь) при DotNetNuke.Services.Localization.Localization.GetResourceFileCallBack (cacheItemArgs cacheItemArgs) на DotNetNuke.Common .Utilities.DataCache.GetCachedData [TObject] (CacheItemArgs cacheItemArgs, CacheItemExpiredCallback cacheItemExpired, Boolean storeInDictionary)

Благодарен за любую помощь


UPDATE:

изменяющемся к физическому пути заставило меня проблема в ядре DNN, вернувшись к виртуальному пути и изменив строку кода, где в модуле исправлена ​​проблема

ответ

1

Я предполагаю, что вы используете корневой относительный путь, который, поскольку вы находитесь за пределами HTTP-контекста, система терпит неудачу. Это основано на предоставленной трассировке стека и вызове метода FailIfRelativePath().

Если вы посмотрите на код DotNetNuke для Localization.GetString, то обычно ему предоставляется путь к физическому файлу, а не относительный путь. Чтобы подтвердить это, посмотрите на свойство LocalResourceFile, доступное для любого элемента управления модулем, который наследуется от PortalModuleBase.

+0

Отметить ответ, поскольку он помог мне найти проблему, и я не могу действительно увидеть способ объяснить всю полноту всего этого. – Matt

Смежные вопросы