我在Azure API Management后面有一个Azure Web服务。这意味着API管理层使用SSL与我的服务通信,以及用于身份验证的客户端证书。我遇到了这种设置的常见问题,其中POST大小超过49152会导致错误413 RequestEntityTooLarge。有许多文档引用了UploadReadAheadSize设置,但我在Web.config中设置此值的所有尝试都会导致内部服务器错误。以下是我设置值的方法:
<system.webServer>
<serverRuntime uploadReadAheadSize="1048576" />
理想情况下,我想要使用更大的东西,但我只是想让事情先发挥作用。使用此设置部署时,所有后续请求都会因内部服务器错误而失败。我无法在诊断日志中找到任何内容,以指出失败的原因。
寻找关于在何处/如何设置此值的任何指针。谢谢!
答案 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();
}
}