参数值不一致- 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);
}
我期待得到一些反馈,我在这里做错了什么。
对
首先感谢您的帮助,让我找到了正确的方向。
我将API和Web都配置为通过Fiddler Proxy并查看请求,没有什么不同。
然后我再次开始查看我发送的内容(图片),结果是大小问题,较大的图片没有通过,但较小的没有。我搜索了ASP的默认大小。NET应用程序,它是4096 kB,我的一个图像比它大!
web中的这一行。在系统中配置。网页部分解决了这个问题。
<httpRuntime targetFramework="4.5" maxRequestLength="8192"/>
这对我来说是一个很好的学习,我希望它可以帮助那些新的通过网络发送大文件的人!
谢谢!