获取 Azure Asp.Net 核心服务器上图像的文件路径(在控制器中)
Get file path to image on Azure Asp.Net core server (in controller)
我知道这可能是一件容易的事,但我现在已经尝试了几种方法但都没有成功。我有一个名为 AuthorizeController.cs 的控制器。在此控制器内,我想为注册用户指定默认头像图像。
我在构造函数中这样做:
private IWebHostEnvironment WebHostEnvironment { get; }
private byte[] ProfilePicture { get; set; }
this.ProfilePicture = System.IO.File.ReadAllBytes(
string.Concat(this.WebHostEnvironment.WebRootPath, @"\Resources\avatar.png"));
我的图像位于同一个项目中:
MrDashWeb.Server
- Resources
- avatar.png
在我的本地机器上,当我在本地主机上 运行 时,一切正常。但是,将其上传到 Azure 后,我在日志流中收到错误消息:
If the exception handler is expected to return 404 status responses
then set AllowStatusCode404Response to true.--->
System.IO.DirectoryNotFoundException: Could not find a part of the
path 'C:\Resources\avatar.png'.at
Microsoft.Win32.SafeHandles.SafeFileHandle.CreateFile(String fullPath,
FileMode mode, FileAccess access, FileShare share, FileOptions
options)at Microsoft.Win32.SafeHandles.SafeFileHandle.Open(String
fullPath, FileMode mode, FileAccess access, FileShare share,
FileOptions options, Int64 preallocationSize)
我做错了什么以及如何解决?
请创建以下界面以获取WebRootPath
。 WebRootPath
的值应该是D:\home\site\wwwroot\wwwroot
。
CheckPath():
public string CheckWebRootPath()
{
string wwwPath = _webHostEnvironment.WebRootPath;
return wwwPath;
}
测试结果:
我也像下面这样测试了你的代码,我认为你的代码是正确的。
public string CheckFile()
{
string wwwPath = _webHostEnvironment.WebRootPath;
var ProfilePicture= System.IO.File.ReadAllBytes(
string.Concat(wwwPath, @"\Resources\avatar.png"));
return ProfilePicture.Length.ToString();
}
建议
检查WebRootPath的值,如果值为C:/
,请在azure portal中重新创建一个新的webapp。
如果你的webapp名字是testapp,那么webappurl应该是
https://testapp.azurewebsites.net
然后您可以通过下面的方式查看您的文件url
https://testapp.scm.azurewebsites.net
我知道这可能是一件容易的事,但我现在已经尝试了几种方法但都没有成功。我有一个名为 AuthorizeController.cs 的控制器。在此控制器内,我想为注册用户指定默认头像图像。
我在构造函数中这样做:
private IWebHostEnvironment WebHostEnvironment { get; }
private byte[] ProfilePicture { get; set; }
this.ProfilePicture = System.IO.File.ReadAllBytes(
string.Concat(this.WebHostEnvironment.WebRootPath, @"\Resources\avatar.png"));
我的图像位于同一个项目中:
MrDashWeb.Server
- Resources
- avatar.png
在我的本地机器上,当我在本地主机上 运行 时,一切正常。但是,将其上传到 Azure 后,我在日志流中收到错误消息:
If the exception handler is expected to return 404 status responses then set AllowStatusCode404Response to true.---> System.IO.DirectoryNotFoundException: Could not find a part of the path 'C:\Resources\avatar.png'.at Microsoft.Win32.SafeHandles.SafeFileHandle.CreateFile(String fullPath, FileMode mode, FileAccess access, FileShare share, FileOptions options)at Microsoft.Win32.SafeHandles.SafeFileHandle.Open(String fullPath, FileMode mode, FileAccess access, FileShare share, FileOptions options, Int64 preallocationSize)
我做错了什么以及如何解决?
请创建以下界面以获取WebRootPath
。 WebRootPath
的值应该是D:\home\site\wwwroot\wwwroot
。
CheckPath():
public string CheckWebRootPath()
{
string wwwPath = _webHostEnvironment.WebRootPath;
return wwwPath;
}
测试结果:
我也像下面这样测试了你的代码,我认为你的代码是正确的。
public string CheckFile()
{
string wwwPath = _webHostEnvironment.WebRootPath;
var ProfilePicture= System.IO.File.ReadAllBytes(
string.Concat(wwwPath, @"\Resources\avatar.png"));
return ProfilePicture.Length.ToString();
}
建议
检查WebRootPath的值,如果值为
C:/
,请在azure portal中重新创建一个新的webapp。如果你的webapp名字是testapp,那么webappurl应该是
https://testapp.azurewebsites.net
然后您可以通过下面的方式查看您的文件url
https://testapp.scm.azurewebsites.net