C++;链接到asp.net c#应用程序时dll无法写入文件 我有一个C++ DLL。我想让它写入服务器上的日志文件。当我将它链接到控制台应用程序时,它会很好地写入文件。当我将其链接到asp.net应用程序时,文件I/O失败。我不太确定我错过了什么 这是C++控制台代码,与控制台应用程序连接时工作良好。 char* LogHelper() { char* buff = new char[500]; std::ofstream myfile; myfile.open("testlog.txt",ios::out); if(myfile.is_open()) strcpy(buff,"we made it"); else strcpy(buff,"fail, fail, fail.........."); return buff; }

C++;链接到asp.net c#应用程序时dll无法写入文件 我有一个C++ DLL。我想让它写入服务器上的日志文件。当我将它链接到控制台应用程序时,它会很好地写入文件。当我将其链接到asp.net应用程序时,文件I/O失败。我不太确定我错过了什么 这是C++控制台代码,与控制台应用程序连接时工作良好。 char* LogHelper() { char* buff = new char[500]; std::ofstream myfile; myfile.open("testlog.txt",ios::out); if(myfile.is_open()) strcpy(buff,"we made it"); else strcpy(buff,"fail, fail, fail.........."); return buff; },c#,c++,asp.net,dll,C#,C++,Asp.net,Dll,下面是调用它的C#代码 public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { } [DllImport("C:\\Dev\\ChatLib\\Debug\\ChatLib.dll")] public static extern string dllStartMain(); prot

下面是调用它的C#代码

public partial class _Default : System.Web.UI.Page 
{
    protected void Page_Load(object sender, EventArgs e)
    {

    }

    [DllImport("C:\\Dev\\ChatLib\\Debug\\ChatLib.dll")]
    public static extern string dllStartMain();

    protected void b1_Click(object sender, EventArgs e)
    {
      t1.Text = dllStartMain();
    }
}
看起来应该很简单。为什么链接到控制台应用程序而不是web应用程序时dll可以工作?我知道它执行dll,因为它返回“fail,fail,fail………”字符串

任何关于这个主题的文章的帮助或建议都将不胜感激。提前谢谢

extern "C" __declspec char* LogMain();
{
    //Put your code here..
    //return the char*.
}

[DllImport("ChatLib.dll", CallingConvention = CallingConvention.Cdecl)]
static extern StringBuilder LogMain();

或者只使用不安全的关键字:

//Import function just like above
unsafe
{
    char* t = Importer.LogMain();
    string s = new string(t);
}

在Web应用程序中,是否需要使用C++?另外,考虑到ASP.NET有一个原因锁定了权限。最后为什么不使用内置的.NET日志?我可能使用的是遗留C++代码。我真的不想重写它。DLL需要能够写入日志文件。我强烈建议看看它正在做什么,如果这个功能是由框架实现的。@ CeleJangs: C++流是RRIF,当流超出范围时(当函数返回时)文件被关闭。
//Import function just like above
unsafe
{
    char* t = Importer.LogMain();
    string s = new string(t);
}