我有一个带有Controller的OWIN Selfhosted WebAPI,它接受一个大文件作为输入。该代码在PC中工作,没有任何问题或错误。但是在OSX上的MONO中,消息在Chrome中保持挂起模式。当我使用Base64字符串提供小尺寸文件时,调用将通过。这有助于我得出结论,我的文件大小为1.5 MB,对于使用OSX的MONO上的POST,不是可接受的Base64消息大小。
然而,我尝试在HttpRunTime上使用maxContentSize进行演出,并尝试将OWIN Middleware实现设置为GigRequestSizeInBytes。这两个都没有让我将文件仍然发送到Web API控制器并请求保持挂起状态。
如果您对设置最大邮件大小有任何其他想法,或者知道MONO上是否存在防止文件大小为1.5 MB的内容,请告诉我。
答案 0 :(得分:0)
我找到了使用OwinMiddleware的MAC解决方法。即使我增加了邮件大小,它也不起作用,但是在解决方案之下让我绕过邮件大小限制(最多65K)。
public override async Task Invoke(IOwinContext context)
{
try
{
IOwinRequest request = context.Request;
if (request.Path.HasValue && request.Path.Value.Contains("METHODNAMEFORLARGEFILE"))
{
//TODO: Remove Workaround for MAC to explicitly download whole stream to avoid issues with message size. PC works without this workaround.
LogHelper.Logger.Info("OWIN METHODNAMEFORLARGEFILE Request");
var stream = request.Body;
string requestBody = await (new StreamReader(stream)).ReadToEndAsync();
var requestData = Encoding.UTF8.GetBytes(requestBody);
context.Request.Body = new MemoryStream(requestData);
}
await Next.Invoke(context);
}
catch(Exception ex)
{
LogHelper.Logger.Error(ex.Message, ex);
throw ex;
}
}