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

Mono OSX Owin Web API Setup- How to setup MaxMessageSize?

我有一个 OWIN 自托管 WebAPI,它带有一个接受大文件作为输入的控制器。该代码在 PC 中运行,没有任何问题或错误。但是在 OSX 上的 MONO 中,消息在 Chrome 中保持挂起模式。当我使用 Base64 字符串提供一个小文件时,调用成功。这帮助我得出结论,我的大小为 1.5 MB 的文件对于 POST 和 OSX 的 MONO 来说不是可接受的 Base64 消息大小。

不过,我尝试在 HttpRunTime 上使用 maxContentSize 进行演出,还尝试将 MaxRequestSizeInBytes 设置为演出来实现 OWIN 中间件。这两个都没有让我 POST 文件仍然到 Web API 控制器并且请求保持未决状态。

如果您对设置最大消息大小有任何其他想法,或者知道 MONO 上是否有阻止文件大小为 1.5 MB 的内容,请告诉我。

我使用 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;
                }
            }