ASP.NETWebサイトを介してP/Invokeを介してファイルの書き込みと読み取りを試みています。Webサイトでこれを行うときに、ファイルがどこに書き込まれるか、または読み取られるかという問題に直面していますdlls
。私は以下の例で問題を説明しようとしました:
.cppファイル(読み取りおよび書き込み機能を含む)
extern "C" TEST_API int fnTest(char* fileDir)
{
ofstream myfile;
myfile.open (strcat(fileDir, "test.txt"));
myfile << "Writing this to a file.\n";
myfile.close();
}
extern "C" TEST_API char* fnTest1(char* fileDir)
{
ifstream myReadFile;
myReadFile.open(strcat(fileDir, "test1.txt"));
char output[100];
if (myReadFile.is_open()) {
while (!myReadFile.eof()) {
myReadFile >> output;
return output;
}
Webサイトのビルドイベントを投稿して、上記のC++プロジェクトからWebサイトのbin
フォルダーにdllをコピーします。
Default.aspx.cs-C#
DLL関数
public static class Functions(){
DllImport[("Test1.dll", EntryPoint="fnTest", CharSet=CharSet.Ansi]
public static extern int fnTest(string dir);
DllImport[("Test1.dll", EntryPoint="fnTest1", CharSet=CharSet.Ansi]
public static extern StringBuilder fnTest1(string dir);
}
Page_Loadイベント
string direc = AppDomain.CurrentDomain.BaseDirectory + "bin\\";
string txt1 = Functions.fnTest(direc).ToString(); //failing here - keeps on loading the page forever
string txt2 = Functions.fnTest(direc).ToString(); //failing here - keeps on loading the page forever
direc
プロジェクト出力の現在のディレクトリとして設定されているデスクトップアプリケーションで同じPage_Loadコードを試してみると、すべてが正常に機能します。Webサイトの場合、ファイルの書き込みまたは読み取りが行われるディレクトリが混乱しているだけであり、これを修正して機能させる方法を実際に理解することはできません。提案をいただければ幸いです。