我有一个webapi工具,我想向它发布文件,我在swagger上的api端口是5146,我在IIS上的端口是8000,
所以问题是,一切都工作正常,并发送文件也工作正常的swagger端口,但只要我改变它到8000(从IIS读取),它不工作,在 Postman 的错误是500(内部服务器错误)。所以我不知道是什么问题。
这是我的post方法:
public static async Task UploadUserPic(MainWindow mainW, ImageBrush IMGbrush)
{
using (HttpClient client = new HttpClient())
{
client.Timeout = TimeSpan.FromSeconds(5);
string uri = mainW.ApiUri + "resources/UploadUserPic?id=" + mainW.UBI.ID;
//var path = @"C:\Users\Kian\Desktop\20220213_08402dd5.jpg";
var recuestcontent = new MultipartFormDataContent();
//var filestream = File.OpenRead(path);
var bmp = new BitmapImage();
var str = new MemoryStream(Convert.FromBase64String(Convertors.ToString(IMGbrush)));
recuestcontent.Add(new StreamContent(str), "iformfile", mainW.UBI.ID);
client.PostAsync(uri, recuestcontent).Wait();
}
}
字符串
这是我的控制器:
// POST api/UsersController
[HttpPost("UploadUserPic")]
public async Task<IActionResult> UploadUserPic([FromForm] IFormFile iformfile, string id)
{
var resault = await resource_service.UploadUserPic(iformfile, id);
return Ok(resault);
}
型
这是我的服务:
public async Task<string> UploadUserPic(IFormFile iformfile,string id)
{
File.WriteAllText(@"C:\Users\Kian\Desktop\info.txt", "Got");
string? filename = null;
try
{
filename = id + ".jpg";
string fileDIR = MyClasses.Paths.ResourcesDirectory() + "UsersPics\\";
if (!Directory.Exists(fileDIR))
Directory.CreateDirectory(fileDIR);
string filepath = fileDIR + filename;
if (File.Exists(filepath))
{
File.Delete(filepath);
}
using (var filestream = new FileStream(filepath, FileMode.Create))
{
await iformfile.CopyToAsync(filestream);
}
return filename;
}
catch
{
}
return filename;
}
型
resourcesdirectory()来自这里:
public static string GetCurentDirectory()
{
var resault = Directory.GetCurrentDirectory();
return resault;
}
public static string ResourcesDirectory()
{
var resault = Path.Combine(Directory.GetCurrentDirectory(), "Resources\\");
if (!Directory.Exists(resault))
Directory.CreateDirectory(resault);
return resault;
}
型
1条答案
按热度按时间fcy6dtqo1#
我发现了两点需要注意的地方,你可以查一下。
1. IIS访问权限
我看到你的硬编码路径像
C:\Users\Kian\Desktop\info.txt
。您可以在另一个驱动器中读取和写入它,而不是C:开车。2.您需要检查文件夹结构,确保与Debug模型相同。(您可以在bin文件夹中找到调试文件)
我的意思是你需要检查
UsersPics
和Resources
文件夹(等等),如果它存在。