今天有需求要求多语言,也就是一下拉框,选择语言,立马提交变成E文那种。 想来简单,因为winform下做过N次,打开VS2005,新建项,添加资源文件,OK,将名字改成Msg.地区号.resx,然后zh-CN、en-US各一份,外加一个没地区号的默认资源。随后web-config里头addkey,一切都这么顺利成章; 现在环境如下: 
vs2005,资源文件3份:Msg.zh-CN.resx   Msg.en-US.resx   Msg.resx,另外web-config中配置默认语言 
        <!--语言切换--> 
        <add   key="DefaultLang"   value="zh-CN"/> 
        <add   key="1"   value="zh-CN"/> 
        <add   key="2"   value="en-US"/> 然后Global.asax中Session_Start事件: 
                try 
                { 
                        string   lang   =   ""; 
                        if   (this.Session["lang"]   ==   null) 
                        { 
                                //设定语言到cookie 
                                lang   =   ConfigurationManager.AppSettings["DefaultLang"]; 
                                this.Session["lang"]   =   lang; 
                        } 
                } 
                catch   (Exception   ex) 
                { 
                        Response.Redirect("~/notlang.aspx"); 
                } 然后首页Page_Load中调用: 
黑暗的一天来了,第一次我按照以往的经验调用: 
string   lang="" 
if(this.Session["lang"]!=null) 
      lang=   this.Session["lang"]; 
else 
      lang=   System.Configuration.ConfigurationManager.AppSettings["DefaultLang"]; ResourceManager   rm   =   new   ResourceManager("命名空间.Msg",system.Reflection.Assembly.GetExecutingAssembly()); 
System.Globalization.CultureInfo   ci   =   new   System.Globalization.CultureInfo(lang) 配置完毕:开始查Key       rm.GetString("LoginTit",ci) 完了出错,我认为是我记错了new   ResourceManager的第一个参数,改为("Msg",...),错误...仔细检查一编,web-config没错,地区名没错,session["lang"]正常获得web-config的值,最后运行至获取key就出错,仔细看看错误消息:未能在给定的程序集中找到任何适合于指定的区域性(或非特定区域性)的资源.请确保已将"iconresourc..."正确什么链接什么到程序集"XXXX", 
我注意到"XXXX"看起来似乎是个随机字符串,是否是用VS2005自带IIS调试出的错,发布到win2003IIS,错误依旧,打开bin文件,我突然看到bin下生成的dll文件名与刚刚出错的"XXXX"是两个东西,晕,记着那个帖子说过VS2005web程序的程序集名是加密的,还牵扯到密钥什么的,不管了,我可不想解密,于是在调用前加上 string   str   =   System.Reflection.Assembly.GetExecutingAssembly().GetName().Name; 
然后在加上 
rh   =   new   ResourceManager(str   +   ".Msg",   System.Reflection.Assembly.GetExecutingAssembly());     //new   ResourceHelper(this.Page); 
                        System.Globalization.CultureInfo   ci   =   new   System.Globalization.CultureInfo(ConfigurationManager.AppSettings["DefaultLang"]); 
这次str保证与程序集名同步了,问题是,错误还是依旧: 
未能在给定的程序集中找到任何适合于指定的区域性(或非特定区域性)的资源.请确保已将"iconresourc..."正确什么链接什么到程序集"XXXX", "XXXX"是可变的,随机的程序集名。小弟花悲愤为力量,花了半晚上在网上寻觅解决方法,但找到的大多都为winform、或无结果帖子,哪位大哥知道思路的点拨点拨,吐血求解啊!!!