目前我们正在试图本地化我们相当广泛的模块,以及使用单个resx(为了便于管理),我们写了下面的代码,它返回键然而,这确实让我们在事件查看器日志消息(下面的代码)这里不允许使用相对虚拟路径'x.resx'
我还要补充我不能使用httpcontext.current.server.mappath,作为功能也使用那里没有一个HttpContext的
代码:
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(VirtualPath virtualPath,布尔permitNull)在 System.Web.Hosting.HostingEnvironment.MapPathInternal(VirtualPath virtualPath)在 系统.Web.Hosting.HostingEnvironment.MapPath(virtualPath virtualPath)在 System.Web.Hosting.HostingEnvironment.MapPath(字符串 virtualPath)在 DotNetNuke.Services.Localization.Localization.GetResourceFileCallBack在 DotNetNuke.Common(CacheItemArgs cacheItemArgs) .Utilities.DataCache.GetCachedData [TObject](CacheItemArgs cacheItemArgs, CacheItemExpiredCallback cacheItemExpired,布尔 storeInDictionary)
感谢任何帮助
UPDATE:
更改为物理路径引起了我的问题DNN的核心内,恢复回虚拟路径并更改模块中其他位置的代码行修正问题
标记答案,因为它帮助我找到问题,我真的不能看到一种方式来解释它的全部程度。 – Matt 2010-12-14 11:05:13