我现在遇害到的问题:
网站引用了一个assembly,名字为Utils.DLL,在Utils.DLL代码里面需要从一个xml文件里面读信息,但是在asp.net环境下不知道如何才能找到并读取这个xml文件?文件应该放在哪个位置?
我把这个xml文件放在bin目录下(和Utils.DLL同一个位置),然后在Utils.DLL里用Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location)来获取Utils.DLL路径,
但获取到的值是一个临时目录,“C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\thinclient\ba81bed7\a7082081\assembly\dl3\62f82680\8345eb5b_37a6c901\”,
这个值肯定是不对的。麻烦高手分析一下,或者能知道网站的绝对地址也可以,比如我的网站是放在“e:\myweb"下,能获取这个值,然后就可以获取该xml文件的绝对路径了。

解决方案 »

  1.   

    找到两个解决办法:
    1. 用Request.PhysicalApplicationPath可以获取当前网站的物理地址.
    2. 用Request.MapPath("~/")获取当前网站的物理地址.
      

  2.   

    看样子Utils.dll是一个通用的类库,可以把XML文件的路径通过参数传进来,在调用时可以用Server.MapPath("~/data.xml")这种形式获取文件的绝对路径并传入。
      

  3.   

    有一种办法可以不知道路径就可以读取1、将XML作为资源文件
    2、string assemblyName = "Entities";
    string source = "eDoc.Entities.users.xml";              Assembly assembly = Assembly.Load(assemblyName);
                Stream src = assembly.GetManifestResourceStream(source);
                XmlDocument xmlDoc = new XmlDocument();
                xmlDoc.Load(src);
      

  4.   

    这个问题的解决方法在博客园里已经有了,http://www.cnblogs.com/yangxiaohu1/archive/2009/04/15/1436111.html