Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/258.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# WebApi项目/模板中| DataDirectory |的位置_C#_Entity Framework_Asp.net Web Api - Fatal编程技术网

C# WebApi项目/模板中| DataDirectory |的位置

C# WebApi项目/模板中| DataDirectory |的位置,c#,entity-framework,asp.net-web-api,C#,Entity Framework,Asp.net Web Api,我确实意识到这里有很多关于如何更改| DataDirectory |的值的问题。我的问题略有不同 我意识到,如果使用EntityFramework的WebApi项目,那么| DataDirectory |指向默认创建的App|u数据文件夹。我相信MVC项目也是如此 所以我的问题是,在这些标准模板中,在哪里可以找到将App|u数据指定为| DataDirectory|的代码。我只想对我的类库使用相同的代码 谢谢|数据目录|在System.Web assembly下的HttpRuntime类中定义

我确实意识到这里有很多关于如何更改| DataDirectory |的值的问题。我的问题略有不同

我意识到,如果使用EntityFramework的WebApi项目,那么| DataDirectory |指向默认创建的App|u数据文件夹。我相信MVC项目也是如此

所以我的问题是,在这些标准模板中,在哪里可以找到将App|u数据指定为| DataDirectory|的代码。我只想对我的类库使用相同的代码


谢谢

|数据目录|在System.Web assembly下的HttpRuntime类中定义

我反编译了System和System.Web assembly,找到了AppDomain类的源代码和一些与DataDirectory相关的以下代码

App_数据是程序集中的硬编码字符串。但是,可以使用AppDomain.CreateDomain()方法重写它

这是我找到的代码

HttpRuntime类中的全局变量

internal const string DataDirectoryName = "App_Data";
private void SetUpDataDirectory()
{
      string path = Path.Combine(this._appDomainAppPath, "App_Data");
      AppDomain.CurrentDomain.SetData("DataDirectory", (object) path, (IPermission) new FileIOPermission(FileIOPermissionAccess.PathDiscovery, path));
}
和HttpRuntime类中的一个函数

internal const string DataDirectoryName = "App_Data";
private void SetUpDataDirectory()
{
      string path = Path.Combine(this._appDomainAppPath, "App_Data");
      AppDomain.CurrentDomain.SetData("DataDirectory", (object) path, (IPermission) new FileIOPermission(FileIOPermissionAccess.PathDiscovery, path));
}
我在DbConnectionOptions.cs文件下的System.Data.Common程序集中找到了另一段代码。这是代码

internal const string DataDirectory = "|datadirectory|";
[PermissionSet(SecurityAction.Assert, Unrestricted = true)]
internal static string GetDataDirectory()
{
      if (HostingEnvironment.IsHosted)
        return Path.Combine(HttpRuntime.AppDomainAppPath, "App_Data");
      string path1 = AppDomain.CurrentDomain.GetData("DataDirectory") as string;
      if (string.IsNullOrEmpty(path1))
      {
        string path1_1 = (string) null;
        Process currentProcess = Process.GetCurrentProcess();
        ProcessModule processModule = currentProcess != null ? currentProcess.MainModule : (ProcessModule) null;
        string path2 = processModule != null ? processModule.FileName : (string) null;
        if (!string.IsNullOrEmpty(path2))
          path1_1 = Path.GetDirectoryName(path2);
        if (string.IsNullOrEmpty(path1_1))
          path1_1 = Environment.CurrentDirectory;
        path1 = Path.Combine(path1_1, "App_Data");
        AppDomain.CurrentDomain.SetData("DataDirectory", (object) path1, (IPermission) new FileIOPermission(FileIOPermissionAccess.PathDiscovery, path1));
      }
      return path1;
}
然后我在System.Web.DataAccess程序集中的SqlConnectionHelper类下找到了另一个代码。这是代码

internal const string DataDirectory = "|datadirectory|";
[PermissionSet(SecurityAction.Assert, Unrestricted = true)]
internal static string GetDataDirectory()
{
      if (HostingEnvironment.IsHosted)
        return Path.Combine(HttpRuntime.AppDomainAppPath, "App_Data");
      string path1 = AppDomain.CurrentDomain.GetData("DataDirectory") as string;
      if (string.IsNullOrEmpty(path1))
      {
        string path1_1 = (string) null;
        Process currentProcess = Process.GetCurrentProcess();
        ProcessModule processModule = currentProcess != null ? currentProcess.MainModule : (ProcessModule) null;
        string path2 = processModule != null ? processModule.FileName : (string) null;
        if (!string.IsNullOrEmpty(path2))
          path1_1 = Path.GetDirectoryName(path2);
        if (string.IsNullOrEmpty(path1_1))
          path1_1 = Environment.CurrentDirectory;
        path1 = Path.Combine(path1_1, "App_Data");
        AppDomain.CurrentDomain.SetData("DataDirectory", (object) path1, (IPermission) new FileIOPermission(FileIOPermissionAccess.PathDiscovery, path1));
      }
      return path1;
}
这意味着,| DataDirectory |被定义并在多个位置使用。但通常从HttpRuntime和AppDomain属性获取数据

我正在使用JetBrain的DotPeek来反编译这些程序集。我希望这对你也有帮助