by 易水寒
24. July 2009 12:37
越来越多的项目通过自定义Resource Provider来提供多语音支持。一般情况下我们都从实现一个叫ResourceProviderFactory的基类开始,我们要重写其中的两个方法:
public override IResourceProvider CreateGlobalResourceProvider(string classKey) {}
public override IResourceProvider CreateLocalResourceProvider(string virtualPath) {}
其中virtualPath传递的是页面的从根目录开始的页面相对路径,我们将用这个变量去数据库或者XML资源文件中取页面资源。但是为了灵活性,一般情况下资源保存页面路径的时候用的是不包括根目录的相对路径,因此我们需要将virtualPath做一下处理去掉根目录。
考虑到在IIS有两种方式发布ASP.NET程序,一种是使用虚拟目录的方式,我们在开发的过程经常使用这种方式;另一种方式是使用web site的方式,比方说直接把ASP.NET放到Default Web Site下面。在去掉virtualPath的根目录的时候应该充分讨论这两种方式的不同。下面是一个例子:
虚拟目录方式:virtualPath = /ProjectName/module/report/report1.aspx
Default Web Site: virtualPath = /module/report/report1.aspx
我们期待的处理后的virtualPath = module/report/report1.aspx, 它将与资源进行匹配。你有没有在你项目中考虑这两种发布方式呢?检查一下吧。