Search code examples
c#proxyfogbugzbugzscout

Difficulty with BugzScout.net from behind a proxy


I'm attempting to use Fogbugz's BugzScout in order to automatically submit unhanded application exceptions to my Fogbugz on demand Account. I've written up a wrapper class for it and everything appears to be just groovy - on my box. Testing the same code in the production environment, behind a Proxy that requires authentication, I have had nothing but issues.

I went to work modifying the BugzScout code in order to get it to authenticate with the Proxy, and after trying many different methods suggested via a Google search, found one that works! But now I'm getting an "Connection actively refused" error from Fogbugz itself, and I don't know what to do.

Here is the code where the BugzScout connects via a .net WebClient to submit a new case, with my modifications to deal with our Proxy. What am I doing that would cause Fogbugz to refuse my request? I've removed all non web-client related code from the procedure for ease of reading.

public string Submit(){         
        WebClient client = new WebClient();
        WebProxy proxy = new WebProxy();
        proxy.UseDefaultCredentials = true;            
        client.Proxy = proxy;            
        Byte[] response = client.DownloadData(fogBugzUrl);
        string responseText = System.Text.Encoding.UTF8.GetString(response);
        return (responseText == "") ? this.defaultMsg : responseText;
    }

The url is correct and the case is filled in properly- this has been verified.

EDIT: Additional info.

  • Using Fogbugz on Demand.
  • Using FogBugz.net code in it's entirety, with only these additions
       WebProxy proxy = new WebProxy();
       proxy.UseDefaultCredentials = true;            
       client.Proxy = proxy;

Solution

  • Got the fix from Fogbugz- this is the appropriate network code to get though the proxy authentication and not mis-authenticate with Bugzscout.

    WebRequest.DefaultWebProxy.Credentials = CredentialCache.DefaultNetworkCredentials;
    WebRequest request = WebRequest.Create(fogBugzUrl);
    request.ContentType = "application/x-www-form-urlencoded";
    request.Method = "POST";
    request.Proxy.Credentials = CredentialCache.DefaultNetworkCredentials;     
    Stream requestStream = request.GetRequestStream();
    requestStream.Write(bytes, 0, bytes.Length);
    requestStream.Close();