我无法获取我创建的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。这就是为什么它无法获得当前路径的原因吗?
答案 0 :(得分:1)
您的主要问题是您认为磁带库将保留在磁盘上。
ASP.NET在启动过程中获取所有程序集,并将其移动到临时文件夹,在那里它可以根据需要使用它们。
所以C:\Users\miyahira\AppDataLocalTemp\3f3574554-2ef8-e8r9-9c8b-e40561d03bb
是正确的路径。
您的ActiveX组件如何添加到应用程序? ASP.NET站点的位置是什么?您可以尝试从HTTPContext.ApplicationInstance
属性获取路径,但无法确定它是否有效。