1

「fAgent.dll」という名前のクラス ライブラリがあり、この dll ファイルを 2 つのアプリケーションで使用しています。1 つのアプリケーションはデスクトップ アプリで、もう 1 つは Web です。この dll ファイルは、bin ファイルまたは xml ファイルを読み取る必要があります。次のように、デスクトップで bin ファイルを開くことができます。

FileStream fs = new FileStream(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "\\MyApp\\ConnSettings.bin", FileMode.Open);

dll が bin ファイルを見つけられない場合、次のように xml ファイルを読み取ろうとします。

XmlDocument doc = new XmlDocument();
var path = (new System.Uri(System.Reflection.Assembly.GetExecutingAssembly().CodeBase)).AbsolutePath;
doc.Load(path + "\fCns.xml");

FileNotFoundException で、次のコードを試してください。

XmlDocument doc = new XmlDocument();
System.Reflection.Assembly asm = System.Reflection.Assembly.GetAssembly(typeof(fAgent.Tools));
string asmPath = asm.CodeBase;
doc.Load(asmPath.Replace("fAgent.DLL", "fCns.xml"));

Xml ファイルと dll ファイルは同じフォルダーにあります。デスクトップでは機能しますが、Web では機能しません。Mappath関数を使用せずに、Web上の「~/bin」フォルダーを取得する必要があります。これどうやってするの?

回答ありがとうございます。

4

1 に答える 1

1

HttpRuntime.BinDirectoryプロパティを使用するか、それよりも優れています。binApp_Dataフォルダー内のファイルを変更するかのように、bin の代わりにフォルダーにファイルを配置すると、アプリケーションが再起動します。

var filePath = System.IO.Path.Combine(HttpRuntime.BinDirectory, "ConnSettings.bin");
于 2012-08-17T09:35:11.297 に答える