相关疑难解决方法(0)

获取应用程序文件夹路径的最佳方法

我看到有一些方法可以获取应用程序文件夹路径:

  1. Application.StartupPath
  2. System.IO.Path.GetDirectoryName( System.Reflection.Assembly.GetExecutingAssembly().Location)
  3. AppDomain.CurrentDomain.BaseDirectory
  4. System.IO.Directory.GetCurrentDirectory()
  5. Environment.CurrentDirectory
  6. System.IO.Path.GetDirectoryName( System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase)
  7. System.IO.Path.GetDirectory(Application.ExecutablePath)

取决于具体情况,最好的方法是什么?

.net c#

470
推荐指数
6
解决办法
55万
查看次数

“ IHostingEnvironment”已过时

我将项目更新为.NETCORE v3.0.0-preview3,现在得到:

Startup.cs(75,50,75,69):警告CS0618:'IHostingEnvironment'已过时:'此类型已过时,将在以后的版本中删除。推荐的替代方法是Microsoft.AspNetCore.Hosting.IWebHostEnvironment。

代码是:

public void Configure(IApplicationBuilder app, IHostingEnvironment env) {
  if (env.IsDevelopment()) {
    ...
Run Code Online (Sandbox Code Playgroud)

现在正确的方法是什么?是否有任何文档/示例来显示?

.net-core asp.net-core asp.net-core-3.0

22
推荐指数
3
解决办法
1万
查看次数

在ASP.NET Core模块进程内托管SetBasePath中使用的目录

SetBasePath用于进程内托管的正确参数是什么?

我们以这种方式设置配置:

private static IConfiguration Configuration { get; } = new ConfigurationBuilder()
    .SetBasePath(Directory.GetCurrentDirectory())
    .AddJsonFile("appsettings.json", optional: false)
    .Build();
Run Code Online (Sandbox Code Playgroud)

但是,使用ASP.NET Core 2.2进程内托管时,Directory.GetCurrentDirectory()将返回C:\Program Files\IIS Express而不是我的应用程序根目录。

编辑:

我正在初始化我的配置,Program.Main以便按照示例阅读设置以传递给Serilog 。

回答:

可悲的是,这个问题被标记为重复,因此在问题中回答。

这个问题在这里讨论。在下一次ASP.NET Core更新中,GetCurrentDirectory将提供与进程外托管相同的值。同时,提供以下代码作为解决方法。

using System;

namespace SampleApp
{
    internal class CurrentDirectoryHelpers
    {
        internal const string AspNetCoreModuleDll = "aspnetcorev2_inprocess.dll";

        [System.Runtime.InteropServices.DllImport("kernel32.dll")]
        private static extern IntPtr GetModuleHandle(string lpModuleName);

        [System.Runtime.InteropServices.DllImport(AspNetCoreModuleDll)]
        private static extern int http_get_application_properties(ref IISConfigurationData iiConfigData);

        [System.Runtime.InteropServices.StructLayout(System.Runtime.InteropServices.LayoutKind.Sequential)]
        private struct IISConfigurationData
        {
            public IntPtr pNativeApplication;
            [System.Runtime.InteropServices.MarshalAs(System.Runtime.InteropServices.UnmanagedType.BStr)]
            public …
Run Code Online (Sandbox Code Playgroud)

c# asp.net-core

6
推荐指数
0
解决办法
3201
查看次数

Directory.GetCurrentDirectory() 没有返回正确的目录

在我的 ASP.NET Core 2.2 MVC 服务器中,我想添加一个文件夹来存储静态文件。我找到了以下代码来执行该操作:

app.UseStaticFiles(new StaticFileOptions {
    FileProvider = new PhysicalFileProvider(
        Path.Combine(Directory.GetCurrentDirectory(), "StaticFiles")),
    RequestPath = "/StaticFiles"
});
Run Code Online (Sandbox Code Playgroud)

在我的电脑中,该项目位于"C:\Users\MyUsername\source\repos\WebApplication1\WebApplication1",在同一目录中有一个名为“StaticFiles”的Startup.cs文件夹和一个写入上述代码的文件。

但是当我执行代码时出现以下错误:

'System.IO.DirectoryNotFoundException' in Microsoft.Extensions.FileProviders.Physical.dll C:\Program Files\IIS Express\StaticFiles\
Run Code Online (Sandbox Code Playgroud)

Directory.GetCurrentDirectory()正在恢复"C:\\Program Files\\IIS Express",而不是"C:\Users\MyUsername\source\repos\WebApplication1\WebApplication1"我怎样才能得到正确的方向?

c# asp.net-core

5
推荐指数
1
解决办法
1万
查看次数

如何从 ASP.NET Core 3 控制器中访问 IWebHostEnvironment?

我希望能够从控制器中的代码浏览 Web 根目录中的目录(例如我的 \img 目录或 \pdf 目录)。

我想使用以下内容,其中env是一个实例IWebHostEnvironment

var provider = env.WebRootFileProvider;
var path = env.WebRootPath;
Run Code Online (Sandbox Code Playgroud)

我不确定如何IWebHostEnvironment从控制器中获取 的实例。如何才能做到这一点?

c# asp.net-core

5
推荐指数
1
解决办法
9598
查看次数

将文件上传到ASP.NET Core中的wwwroot文件夹

为什么我的以下代码有时有效,但有时却无效?

 private bool UploadFile(IFormFile ufile, string fname)
 {
     if (ufile.Length > 0)
     {
          string fullpath = Path.Combine(_env.WebRootPath, fname);
          using (var fileStream = new FileStream(fullpath, FileMode.Create))
          {
               ufile.CopyToAsync(fileStream);
          }
          return true;
     }
     return false;
 }
Run Code Online (Sandbox Code Playgroud)

代码确实设法将图片保存到我在下创建的文件夹中wwwroot,但是图片没有出现,甚至在Visual Studio中也没有出现。

有办法解决吗?

谢谢。

即使打开存储图片的文件夹的文件浏览器,图片也好像在那里但没有显示任何图像。

c# asp.net-core

3
推荐指数
1
解决办法
3796
查看次数

标签 统计

asp.net-core ×5

c# ×5

.net ×1

.net-core ×1

asp.net-core-3.0 ×1