各位大哥
小弟刚接触.net,写了一个dll,其中有个配置文件要调用,我用了Environment.CurrentDirectory来取当前程序的目录
这样我在winform程序中调用这个dll没啥问题,但是现在因为有需求,需要在aspx页面中调用这个dll
我是在aspx页面项目中引用了这个dll,调试的时候显示C:\Program Files\Common Files\Microsoft Shared\DevServer\10.0目录找不到dll中的配置文件,我直接将配置文件拷到这个目录,调试可以正常运行了,能正常调用dll
将aspx发布到IIS后,在浏览器中调用dll时又不行了,弹出另一个目录找不到配置文件C:\Documents and Settings\Default User\My Documents,这回即使将配置文件拷进去也不能正常运行,不知道是啥问题啊

解决方案 »

  1.   

    path = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
      

  2.   

    本帖最后由 net_lover 于 2011-07-08 11:34:30 编辑
      

  3.   

    可能前面描述的不清楚
    在dll里,需要调用一个xml文件,我在dll里是这样写的            
    XmlDocument xmlDoc = new XmlDocument();
    xmlDoc.Load(Environment.CurrentDirectory + "\\Config.xml");现在我需要在aspx页面中调用这个dll
    我在aspx项目中的引用处添加了dll引用,在aspx.cs中加了using PrintDriver(dll名称)然后在aspx方法里创建了dll的一个类的对象
    PrintData testData = new PrintData();   (这个对象创建时需要前面说的去读取xml配置文件)现在的问题就是在Vs里直接调试时,弹出:
    未能找到文件“C:\Program Files\Common Files\Microsoft Shared\DevServer\10.0\Config.xml”
    然后我手动把Config.xml拷贝到上面的目录中后
    dll能正常调用执行了此时我将aspx发布到iis上,再通过网页浏览这个页面调用方法时弹出
    “/”应用程序中的服务器错误。
    未能找到文件“C:\Documents and Settings\Default User\My Documents\Config.xml”。
    这时我再手动把Config.xml拷贝到上面的目录后
    网页就一直在loading,调用不成功不知道是发布到IIS后我这个配置文件该怎么放置,还是说在aspx项目中要进行什么特殊设置,还是说是iis里有啥特殊设置?
     
      

  4.   

    发布到IIS后有时候还出现
    “/”应用程序中的服务器错误。
    未能找到文件“c:\windows\system32\inetsrv\Config.xml”。
      

  5.   

    xmlDoc.Load(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location+"\\Config.xml");dll和xml放在一个文件夹下即可
      

  6.   

    另外,你还可以在PrintData.cs里面使用String fp = System.Web.HttpContext.Current.Server.MapPath("~/Config.xml");Config.xml在根目录下
      

  7.   

    Server.MapPath("~")把虚拟目录变成实际目录,就可以了
      

  8.   

    用了net_lover说的xmlDoc.Load(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) + "\\Config.xml");
    在winform程序调用没问题
    在aspx里不管是Vs调试还是发不到IIS都出现
    “/”应用程序中的服务器错误。
    --------------------------------------------------------------------------------未能找到文件“C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\root\c34e8451\ab8d2d2e\assembly\dl3\293b1fa6\27fda2f8_303dcc01\Config.xml”。
    另外,Server.MapPath我在PrintData.cs里即使加了system.web引用也没有这个方法,在aspx页面倒是可以
    不知道是怎么用法,求指点
      

  9.   

    是在aspx里将Environment.CurrentDirectory = System.Web.HttpContext.Current.Server.MapPath("~");
    ???
    这样在Vs里调试倒是可以,但是发布后依然不行,哭啊
      

  10.   

    感谢两位,路径的问题已经解决了,但是发布到IIS去还是不能成功调用,详细调试了下,发现是dll最后执行PrintDocument类的Print方法一直没有执行,难道aspx里调用PrintDocument类有啥特殊设置吗?因为这个dll我用winform程序调用都正常的啊
      

  11.   

    PrintDocument是用在winform下的,webform不能使用的。
    web打开使用的是js的window.print()使用PrintDocument,必须做成客户端的插件ActiveX