Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# webRequest无法从不同的用户处工作_C#_.net_Networking_Httpwebrequest - Fatal编程技术网

C# webRequest无法从不同的用户处工作

C# webRequest无法从不同的用户处工作,c#,.net,networking,httpwebrequest,C#,.net,Networking,Httpwebrequest,我构建了一个小型winform应用程序,它使用一些API发送sms消息, 当我用我的用户在我的工作站上运行它时,一切都很好,但是如果我在我的工作站上运行它,但作为不同的用户来更改exe文件上的用户shift+鼠标右键: using (Stream requestStream = restRequest.GetRequestStream()) 抛出异常 无法建立连接,因为目标计算机处于活动状态 如果ip地址被拒绝 但是,当我将应用程序复制到另一个用户站并尝试运行它时,它工作正常,并且对我的用户执

我构建了一个小型winform应用程序,它使用一些API发送sms消息, 当我用我的用户在我的工作站上运行它时,一切都很好,但是如果我在我的工作站上运行它,但作为不同的用户来更改exe文件上的用户shift+鼠标右键:

using (Stream requestStream = restRequest.GetRequestStream())
抛出异常

无法建立连接,因为目标计算机处于活动状态 如果ip地址被拒绝

但是,当我将应用程序复制到另一个用户站并尝试运行它时,它工作正常,并且对我的用户执行完全相同的操作

问题是,代码应该集成到使用具有wcf服务的服务器的应用程序中,该服务器将发送sms,而iis应用程序池中的用户将抛出相同的异常

可能是什么

我的简单代码:

JavaScriptSerializer jsonSerializer = new JavaScriptSerializer();
Dictionary<string, object> deserializedJsonDictionary;

HttpWebRequest restRequest;
WebResponse restResponse;

try
{
    string connectionParams = "{some json params for api...}";
    restRequest = (HttpWebRequest)WebRequest.Create(URI);
    restRequest.Method = Method; //post
    restRequest.ContentType = ContentType; // application/json

    using (Stream requestStream = restRequest.GetRequestStream())
    {
        byte[] inputStringBytes = Encoding.UTF8.GetBytes(connectionParams);
        requestStream.Write(inputStringBytes, 0, inputStringBytes.Length);
    }

    using (restResponse = restRequest.GetResponse())
    {
        using (Stream responseStream = restResponse.GetResponseStream())
        {
            StreamReader rdr = new StreamReader(responseStream, Encoding.UTF8);
            string Json = rdr.ReadToEnd();

            deserializedJsonDictionary = (Dictionary<string, object>)jsonSerializer.DeserializeObject(Json);
        }
    }
}
catch(Exception ex)
{
    throw ex;
}

我把问题解决了

在我们公司,我们有连接到互联网的代理

当我的用户登录时,他已从GPO include proxy获得所需的所有设置 当我尝试与其他用户连接时,他根本没有代理设置,这就是问题所在

我所做的只是在代码中添加了代理:

WebProxy proxy = new WebProxy("[my proxy address]", [my proxy port number]);
proxy.BypassProxyOnLocal = false;
request.Proxy = proxy;

是否由于标头不匹配而拒绝连接?服务的身份验证/授权要求是什么?有用户名和密码,但它在到达服务器之前抛出拒绝,如果某些参数错误,服务器返回json,其中包含所有信息,比如用户名和密码,我指的是本地身份验证,api请求在这两种情况下都是相同的。根据我的经验,当api开发者设置了一个调用限制,您在给定的时间段内超过了该限制,这可能是基于用户的,或者2服务要求您提供一个ip地址列表,它将接受来自该列表的请求,并且您已在可接受的ip地址范围之外进行了呼叫。与api提供商交谈时,没有ip范围和呼叫限制,1按原样运行应用程序双击exe将正常运行2运行,因为不同的用户将抛出异常3按原样运行一次无限制