参数值不一致- Azure API应用程序客户端调用本地IIS托管API

本文关键字:API 调用 托管 IIS 客户端 应用程序 不一致 Azure 参数 | 更新日期: 2023-09-27 18:17:38

我坐了一天也想不明白。我在stackoverflow和web上进行了搜索,但没有找到答案。

设置>

这不是最佳设置,但由于遗留代码,这是我必须处理的。

我有一个FileController (API控制器)类托管在客户端web上,用于上传文件。MVC控制器正在制作jquery。通过angular调用FileController.UploadFiles()。FileController.UploadFiles()从数据库中获取一些数据,然后向storeageapi发送一个请求,后者根据CustomResponse对象中的settings参数以某种方式将文件存储在blob中。

问题是参数CustomResponse有时是空的,当它到达控制器,有时我实际上有一个值。这似乎完全是随机的。

我通过点击我的客户端GUI上的上传按钮来手动测试它,该按钮使用Ajax调用FileController,后者反过来调用API。客户端web和存储api都托管在本地,并托管在本地IIS上。会不会是碰撞?

当我使用Swagger UI做帖子时,它不是空的。然后它每次都获得content参数。

当我调试时,请求总是到达Storage API。所以它们之间的"连线"是好的。

我已经尝试做异步和非异步调用,并改变API中的方法也同步和异步没有区别。

代码

FileController(客户端)

byte[] fileBytes = null;
using(var memoryStream = new MemoryStream())
{
    file.InputStream.CopyTo(memoryStream);
    fileBytes = memoryStream.ToArray();
}
var fileBytesString = System.Text.Encoding.UTF8.GetString(fileBytes);
var settingsString = "renditions:large,thumbail;assettype:testdataimage;testdataid:" + testData.Id.ToString() + ";filename:" + fileName;
var client = new StorageAPI();
client.BaseUri = new Uri("http://storageapi.mycompany.local/");
CustomResponse response = null;
response = client.Blob.Post(new CustomRequest()
{
     FileBytesString = fileBytesString,
     Settings = settingsString
});
client.Dispose();

StorageAPI Model CustomRequest

public class CustomRequest
{
    public string FileBytesString { get; set; }
    public string Settings { get; set; }
}

StorageAPI控制器
[HttpPost]
[ResponseType(typeof(CustomResponse))]
[Route("api/Blob/")]
public HttpResponseMessage Post(CustomRequest content)
{
    if (content == null)
    {
        return new HttpResponseMessage(HttpStatusCode.InternalServerError);
    }
    //Parse data and upload file to blob.
    return new HttpResponseMessage(HttpStatusCode.OK);
}

我期待得到一些反馈,我在这里做错了什么。

参数值不一致- Azure API应用程序客户端调用本地IIS托管API

首先感谢您的帮助,让我找到了正确的方向。

我将API和Web都配置为通过Fiddler Proxy并查看请求,没有什么不同。

然后我再次开始查看我发送的内容(图片),结果是大小问题,较大的图片没有通过,但较小的没有。我搜索了ASP的默认大小。NET应用程序,它是4096 kB,我的一个图像比它大!

web中的这一行。在系统中配置。网页部分解决了这个问题。

<httpRuntime targetFramework="4.5" maxRequestLength="8192"/>    

这对我来说是一个很好的学习,我希望它可以帮助那些新的通过网络发送大文件的人!

谢谢!