401未经授权在EndGetResponse上返回。 Apache错误日志:无法生成上下文

问题描述 投票:1回答:1

我有一台运行Apache的服务器。现在我希望能够读取那里的文件夹内容,并且在Apache httpd.conf中配置了这个文件夹,如下所示:

Alias /folder "E:/Folder"

<Directory "E:/Folder">
  AuthName "Public Folder"
  AuthType SSPI
  SSPIAuth On
  SSPIAuthoritative On
  SSPIDomain DOMAIN
  SSPIOfferBasic On
  SSPIOfferSSPI On
  SSPIBasicPreferred Off
  SSPIOmitDomain On
  SSPIUsernameCase lower
  require group "DOMAIN\Domain Users"
</Directory>

现在,当我使用浏览器时,我已经可以使用URL http://ServerName/Folder/访问此信息

所以这项工作已经很好了。但现在我正在尝试为我的C#应用​​程序接收此文件夹数据。我正在使用DefaultNetworkCredentials,我的代码看起来像这样:

public void CheckFolder()
{
    WebRequest request = HttpWebRequest.Create(_uri);
    request.Credentials = CredentialCache.DefaultNetworkCredentials;
    request.BeginGetResponse(new AsyncCallback(HandleGetAvailableUpdates), request);
}

void HandleGetAvailableUpdates(IAsyncResult state)
{
    try
    {
        if (state.IsCompleted)
        {
            WebRequest req = state.AsyncState as WebRequest;
            WebResponse response = req.EndGetResponse(state);
            Stream wStream = null;
            wStream = response.GetResponseStream();
            byte[] data = new byte[response.ContentLength];

            etc.
            .
            .
            .

        }
        catch (WebException ex)
        {
            Console.WriteLine(ex.ToString());
        }
    }
}

req.EndGetResponse(state)现在抛出WebException:

The remote server returned an error: (401) Unauthorized.

回到服务器端我看看Apache error.log,在那里我发现:

(OS 87)The parameter is incorrect.  : authentication failure for "/folder": user unknown, reason: cannot generate context

该计划的这一功能在两个月前就已经运作良好。 C#-Code根本没有改变,但我不知道是否已经完成了服务器或Apache配置。我还尝试在C#-Code中手动提供我的凭证(用户名和密码,与我在通过Web浏览器访问时使用的相同),而不是使用DefaultNetworkCredentials,但没有用。所以最后我的问题是:我忘记了什么吗?服务器上是否还有其他设置可以使其正常工作?

c# authorization apache2 fiddler webrequest
1个回答
0
投票

找出最简单的方法:用户Fiddler,或Live Http Headers,或任何其他HTTP数据包嗅探器,以查看浏览器发送的标题/帖子参数,然后以编程方式复制所有这些参数。

© www.soinside.com 2019 - 2024. All rights reserved.