postman 我的API在IIS Express上工作正常,但在IIS上不工作

mkshixfv  于 2023-08-05  发布在  Postman
关注(0)|答案(1)|浏览(128)

我有一个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;
        }

fcy6dtqo

fcy6dtqo1#

我发现了两点需要注意的地方,你可以查一下。

1. IIS访问权限

我看到你的硬编码路径像C:\Users\Kian\Desktop\info.txt。您可以在另一个驱动器中读取和写入它,而不是C:开车。

2.您需要检查文件夹结构,确保与Debug模型相同。(您可以在bin文件夹中找到调试文件)

我的意思是你需要检查UsersPicsResources文件夹(等等),如果它存在。

相关问题