• C# WebResponse 调用GetResponse()方法时报错:基础连接已经关闭: 连接被意外关闭。


    今天在弄一个登陆方法时,由于请求的是测试服务器,要访问接口的登陆方法,但是在请求过程中, 

    HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(url);

     WebResponse response = request.GetResponse();;

    response 请求报错:基础连接已经关闭: 连接被意外关闭。用postman请求登陆方法报错如下:

    从字表意思是接口方法不允许方法,连接打不开。postman也无法请求。可参考https://blog.csdn.net/jiangyu1013/article/details/82120052

    如果postman还是请求不到,请看如下原因:

    针对这个问题,有以下几个可能:

    1:在请求时加入参数限制,类如:

    HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(url);
    request.Method = "POST";
    request.Timeout = 120 * 1000;
    request.AllowAutoRedirect = true;
    request.KeepAlive = true;
    request.ContentType = contentType;
    ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(CertificateValidation);

    2:(我的问题也是这个原因)在访问接口时,本地host文件没有配置相关信息,可参考https://jingyan.baidu.com/article/fedf073754695735ac89772c.html

    访问路径C:WindowsSystem32driversetc打开hosts文件【要以管理员打开,不然不能保存更改的内容】,在最后一行增加你访问的接口配置信息,类如:

    192.168.0.XXX   api.XXXXX.com就是你访问的接口URL

    # For example:
    #
    # 102.54.94.97 rhino.acme.com # source server
    # 38.25.63.10 x.acme.com # x client host

    # localhost name resolution is handled within DNS itself.
    # 127.0.0.1 localhost
    # ::1 localhost
    192.168.0.XXX   api.XXXXX.com

    保存即可。再次运行项目,惊喜发现终于访问成功!!

    由于有时候需要在局域网访问项目,这里介绍VS怎样在局域网访问项目:【如对此不敢兴趣,为节省你的宝贵时间,可忽略哦~】

    1. 打开项目目录下的.vs目录, 修改applicationhost.config文件中的内容

    2:【192.168.0.110是你的电脑的IP,可通过cmd ipconfig查看本机IP】

              <!--找到项目名-->

            <site name="muTian.sysAdmin.UI.Portal" id="2">
                <application path="/" applicationPool="Clr4IntegratedAppPool">
                    <virtualDirectory path="/" physicalPath="D:CsharpProjectmuTian.sysAdminmuTian.sysAdmin.UI.Portal" />
                </application>
                <bindings>
                         <!--这一行是默认就有的-->
                    <binding protocol="http" bindingInformation="*:10829:localhost" />
                    <!--这一行是增加的-->
                         <binding protocol="http" bindingInformation="*:10829:192.168.0.110" />
                </bindings>
            </site>      

    3:打开cmd【注意以管理员打开】【10829是你的项目端口号,可在VS里面右键-->>属性查看】

    执行 netsh http add urlacl url=http://192.168.0.110:59961/ user=everyone

    此上下文中的命令:
    show cacheparam - 显示 HTTP 服务的缓存参数。
    show cachestate - 列出缓存的 URI 资源及其相关属性。
    show iplisten - 显示 IP 侦听列表中的所有 IP 地址。
    show servicestate - 显示 HTTP 服务快照。
    show setting - 显示服务的设置值。
    show sslcert - 显示 SSL 证书绑定。
    show timeout - 显示服务的超时值。
    show urlacl - 显示 URL 命名空间保留项。

    重新编译运行项目,记得要以管理员省份打开VS,不然会出现503状态码的错误

    至此,关于请求问题介绍完成,如有问题,可评论留言!!

  • 相关阅读:
    关于数组赋值时找不到数组名字的问题
    显示转换与隐式转换
    类型(值类型和引用类型)
    .net webconfig中配置httphanlder无法生效的问题
    微信小程序开发知识点总结
    Raphael.js API 之 Element.attr()
    Raphael.js API 之 Element.attr()
    Raphael.js API之 Animation.delay(),Animation.repeat(),Element.animateWith()
    Raphael.js API之 Animation.delay(),Animation.repeat(),Element.animateWith()
    Raphael.js API之 Paper.path(),Element.click()
  • 原文地址:https://www.cnblogs.com/fengyulv/p/11824369.html
Copyright © 2020-2023  润新知