开发者

401 Unauthorized returned on EndGetResponse. Apache Error log: cannot generate context

开发者 https://www.devze.com 2023-04-09 00:56 出处:网络
I got a server with Apache running. Now I want to be able to read the contents of a folder there and for that this folder is configured in the Apache httpd.conf something like this:

I got a server with Apache running. Now I want to be able to read the contents of a folder there and for that this folder is configured in the Apache httpd.conf something like this:

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>

Now when I use a Browser I can already access this Information with the URL http://ServerName/Folder/

So this workes just fine already. But now I am trying to receive this Folder-Data for my C# application. I am using DefaultNetworkCredentials and my Code looks something like this:

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) now throws the WebException:

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

Going back on Server-Side I have a look at the Apache error.log and there I find:

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

This feature of the Program already worked well about two month ago. The C#-Code did not change at all but I dont know if something had been done with the server or the Apache configuration. I also tried to give my Credentials (username and pw, the same I use when acces开发者_C百科sing via Web-Browser) manually in the C#-Code rather than using the DefaultNetworkCredentials but with no avail. So finally my question would be: Is there something I forgot? Are there any other settings on the server to be made to make it work?


Easiest way to find out: User Fiddler, or Live Http Headers, or any other HTTP packet sniffer to see which headers/post parameters are sent by the browser, and then duplicate all of them programatically.

0

精彩评论

暂无评论...
验证码 换一张
取 消