Mono OSX Owin Web API设置 - 如何设置MaxMessageSize?

时间:2016-09-10 02:17:33

标签: macos mono owin self-hosting

我有一个带有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的内容,请告诉我。

1 个答案:

答案 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;
                }
            }