我试图在我的。net HttpListener上配置基本访问授权,但我一直遇到同样的错误。我已经尝试了所有可以在这个网站和许多其他网站上找到的解决方案,但没有成功。
我需要使用admin/admin作为基本身份验证的用户名/密码。wikipedia页面显示了标题应该是什么样子,我遵循了它。
我一直得到错误"头WWW-Authenticate必须用正确的方法更改,参数:name"然而,没有名为"name"的参数。必须加上这一点,就像维基百科页面上显示的那样。很不幸,我没有办法了,希望有人能帮我。
我的代码如下
private void WebRequestCallback(IAsyncResult result)
{
if (httpListener == null)
{
return;
}
HttpListenerContext context = httpListener.EndGetContext(result);
if (basicAccessAuth)
{
HttpListenerRequest Request = context.Request;
HttpListenerResponse Response = context.Response;
httpListener.AuthenticationSchemes = AuthenticationSchemes.Basic;
NameValueCollection nvCol = new NameValueCollection();
nvCol.Add("Authorization", "admin:admin");
httpListener.Realm = "Overflow";
Request.Headers.Add(nvCol); // error gets thrown here, missing "name" parameter
Response.Headers.Add("WWW-Authenticate: Basic YWRtaW46YWRtaW4=");
HttpListenerBasicIdentity identity = (HttpListenerBasicIdentity)context.User.Identity;
MessageBox.Show(identity.Name);
}
httpListener.BeginGetContext(new AsyncCallback(WebRequestCallback), httpListener);
if (ReceiveWebRequest != null)
{
ReceiveWebRequest(context);
}
ProcessRequest(context);
}
我已经设法弄清楚我的问题了。我以错误的方式添加了标题,它应该是Response。AddHeader而不是Response.Headers.Add