在Azure Web服务中配置UploadReadAheadSize的正确方法是什么?

时间:2016-02-19 20:48:04

标签: ssl azure-web-sites

我在Azure API Management后面有一个Azure Web服务。这意味着API管理层使用SSL与我的服务通信,以及用于身份验证的客户端证书。我遇到了这种设置的常见问题,其中POST大小超过49152会导致错误413 RequestEntityTooLarge。有许多文档引用了UploadReadAheadSize设置,但我在Web.config中设置此值的所有尝试都会导致内部服务器错误。以下是我设置值的方法:

  <system.webServer>
<serverRuntime uploadReadAheadSize="1048576" />

理想情况下,我想要使用更大的东西,但我只是想让事情先发挥作用。使用此设置部署时,所有后续请求都会因内部服务器错误而失败。我无法在诊断日志中找到任何内容,以指出失败的原因。

寻找关于在何处/如何设置此值的任何指针。谢谢!

1 个答案:

答案 0 :(得分:0)

终于弄明白了。请注意,理想情况下,因为我只使用cert auth,所以我应该能够将sslFlags设置为&#34; required&#34;。我试过了,但无法使用Azure API Management正常工作。我一直从IIS收到403.7错误。现在我要把它留给&#34;谈判&#34;并增加uploadReadAheadSize的值,如下所述:

    public class WebRole : RoleEntryPoint
{
    public override bool OnStart()
    {
        try
        {
            using (ServerManager server = new ServerManager())
            {
                string siteName = $"{RoleEnvironment.CurrentRoleInstance.Id}_Web";
                Configuration config = server.GetApplicationHostConfiguration();
                ConfigurationSection accessSection = config.GetSection("system.webServer/security/access", siteName);
                accessSection["sslFlags"] = @"Ssl,SslNegotiateCert";
                ConfigurationSection runtimeSection = config.GetSection("system.webServer/serverRuntime", siteName);
                runtimeSection["uploadReadAheadSize"] = 5242880;
                server.CommitChanges();
            }
        }
        catch (Exception e)
        {
            Trace.TraceError(e.Message);
            throw;
        }

        return base.OnStart();
    }
}