C# 在OWIN自身主机中使用集成的Windows身份验证发送大型POST请求
我正在尝试为经过身份验证的HTTPPOST请求设置一个端点,该端点将处理主体大小约为15KB的请求 我遵循规则并定义C# 在OWIN自身主机中使用集成的Windows身份验证发送大型POST请求,c#,asp.net-web-api,owin,windows-authentication,ntlm,C#,Asp.net Web Api,Owin,Windows Authentication,Ntlm,我正在尝试为经过身份验证的HTTPPOST请求设置一个端点,该端点将处理主体大小约为15KB的请求 我遵循规则并定义 var httpListener = (OwinHttpListener) appBuilder.Properties[typeof(OwinHttpListener).FullName]; httpListener.Listener.AuthenticationSchemeSelectorDelegate = request => request.HttpMeth
var httpListener = (OwinHttpListener) appBuilder.Properties[typeof(OwinHttpListener).FullName];
httpListener.Listener.AuthenticationSchemeSelectorDelegate = request =>
request.HttpMethod == "POST"
? AuthenticationSchemes.IntegratedWindowsAuthentication
: AuthenticationSchemes.Anonymous;
在我的启动.配置中
。这对于较小的请求来说很有吸引力,但是当我试图通过一个大约15KB大小的请求发送HTTP 400错误请求时,我就得到了它。为了测试这一点,我使用
curl -v --ntlm --negotiate -u {username}:{password} -d @myfile.txt http://localhost:8080/my-endpoint
其中myfile.txt
约为15KB。首先,我假设这是一个关于内容长度被限制的问题,并实现了更改限制的方法;不过,这是一个转移视线的问题,因为中间件最终只会被较小的请求调用。事实上,如果我完全摆脱身份验证,一切都会按预期进行
此外,如果我使用
AuthenticationSchemes.Ntlm
而不是AuthenticationSchemes.IntegratedWindowsAuthentication
,那么curl请求不会出现任何问题,因此我有一个有效的解决方法,但我仍然好奇首先是什么导致了问题,如果有一个不依赖于返回NTLM的解决方案。如果您看到异常/错误详细信息(由OWIN进程返回)以及400,则会感到好奇。没有捕获到CLR异常(由VS捕获),HTTP 400响应为空。您是在IIS实例后运行此操作,还是自行托管?如果没有捕获到异常,有关更多详细信息,请查看windows事件日志。@Brannon:自托管(请参阅问题标题)。如果您看到异常/错误详细信息(由OWIN进程返回)以及400CLR异常(由VS捕获),HTTP 400响应为空。您是在IIS实例后面运行此操作,还是自托管?如果未捕获异常,请查看windows事件日志以了解详细信息。@Brannon:self-hosted(请参阅问题标题)。