需要获取我创建的dll类库的当前路径

时间:2015-01-30 13:35:30

标签: c# asp.net activex

我无法获取我创建的dll类库的当前路径,该库在ASP.NET网站中作为ActiveX加载。

我尝试了几个命令,但没有成功。例如,我试图在变量_path中获取当前路径:

namespace WebScanControl {

    [ApplicationControl(Width=640,Height=480)]
    public sealed partial class ScanControl:ApplicationControl {

        public ScanControl() {
            InitializeComponent();
        }

        protected override void Construct(ReadOnlyCollection<object> args) {
            try {

                string _path = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);


            } catch(Exception ex) {
                MessageBox.Show(string.Format("{1}{0}{2}", Environment.NewLine, ex.Message, ex.StackTrace), ex.GetType().Name, MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            base.Construct(args);
        }

     }
}

但是,变量_path得到:

C:\Users\miyahira\AppDataLocalTemp\3f3574554-2ef8-e8r9-9c8b-e40561d03bb

这不是它的路径。

我的dll类库的当前路径是:

F:\webapp\WebScan\Scan\

如您所见,此类库是ApplicationControl。这就是为什么它无法获得当前路径的原因吗?

1 个答案:

答案 0 :(得分:1)

您的主要问题是您认为磁带库将保留在磁盘上。

ASP.NET在启动过程中获取所有程序集,并将其移动到临时文件夹,在那里它可以根据需要使用它们。

所以C:\Users\miyahira\AppDataLocalTemp\3f3574554-2ef8-e8r9-9c8b-e40561d03bb是正确的路径。

您的ActiveX组件如何添加到应用程序? ASP.NET站点的位置是什么?您可以尝试从HTTPContext.ApplicationInstance属性获取路径,但无法确定它是否有效。