localhost 在 Webapi 操作中拒绝连接

Posted

技术标签:

【中文标题】localhost 在 Webapi 操作中拒绝连接【英文标题】:localhost refused to connect in Webapi operation 【发布时间】:2017-08-18 00:15:21 【问题描述】:

我创建了 WebApi 项目并包含示例 Get 方法。 当我尝试从 Firefox/Chrome 浏览器使用 url (http://localhost:port/api/video) 访问 get 方法时,我收到以下消息:-

无法访问此网站 localhost 拒绝连接。 ERR_CONNECTION_REFUSED

当我创建 ASP.NET Web 应用程序并尝试在浏览器中使用 localhost 查看 aspx 页面时,它正在显示该页面。

当我尝试使用 Visual Studio 运行 WebAPI 时,它会在 Google Chrome 中打开 url(http://localhost:port),并显示 HTTP 错误 403.14 - 禁止错误。

我在 Visual Studio 2015 社区中使用 IIS Express。操作系统是 Windows 10。

我曾尝试关闭防火墙并从 hosts.config 文件中删除 #,但没有成功。

在过去 2-3 天一直在寻找同样的问题后,我现在迷失了方向,有什么可以做的吗?

请在下面找到我的代码:-

Global.asax.cs

 public class WebApiApplication : System.Web.HttpApplication
    
        protected void Application_Start()
        
            GlobalConfiguration.Configure(WebApiConfig.Register);
        
    

VideoController.cs

public class VideoController : ApiController
    
        public IEnumerable<string> Get()
        
            return new string[] "Value1", "Value2";
        

WebApiConfig.cs

public static class WebApiConfig
    
        public static void Register(HttpConfiguration config)
        
            // Web API configuration and services
           // config.EnableCors();
            // Web API routes
            config.MapHttpAttributeRoutes();

            config.Routes.MapHttpRoute(
                name: "DefaultApi",
                routeTemplate: "api/controller/id",
                defaults: new  id = RouteParameter.Optional 
            );
        
    

【问题讨论】:

你能用示例 Get 方法展示你的 Web API 控制器吗? 对于初学者,您应该使用 Fiddler 或 PostMan 等测试 API 端点,而不是浏览器,但是不期望任何参数的 GET 会将 JSON 转储到 Chrome 的屏幕上。您需要分享一些代码,以便我们能够为您提供帮助。 我已按要求添加了代码。我使用了 fiddler,它在 Get 方法上给出了以下异常:-“无法建立连接,因为目标机器主动拒绝它” 【参考方案1】:

我终于可以在 localhost 中运行 WebAPI。

我已经检查了控制面板->打开或关闭 Windows 功能->Internet 信息服务->万维网服务->应用程序开发功能|通用 HTTP 功能|安全中的所有选项。

当我从 Visual Studio 2015 调试 Web API 应用程序时,选中所有这些选项可以让我从 GET 请求中获得响应。但是,一旦我停止在 Visual Studio 中调试应用程序,来自 GET 请求的响应也会停止。我发现当我在 Visual Studio 中停止调试时,IIS express 也停止了。 在阅读了几篇文章后,我知道我必须从 Web API Project->Properties->Web->Enable Edit and Continue 中取消选中“Enable Edit and Continue”选项。

但即使我根本不启动 Visual Studio,我也必须使用 GET 响应,所以我最终将我的网站部署在 IIS 中。

【讨论】:

【参考方案2】:

对我来说,重启PC后弹出“localhost拒绝连接”的问题。

解决我的问题的是我在项目属性页面中点击了按钮“创建虚拟目录”

Web API Project-&gt;Properties-&gt;Web-&gt;"Create Virtual Directory"

【讨论】:

【参考方案3】:

您也可以关闭 Visual Studio,删除 .vs 文件夹(可能被隐藏)然后重新编译应用程序。这对我有用。

【讨论】:

以上是关于localhost 在 Webapi 操作中拒绝连接的主要内容,如果未能解决你的问题,请参考以下文章

在 Web API 中启用了 CORS,但访问被拒绝

Ejabberd 无法连接到“localhost”:3306:错误,“连接失败:连接被拒绝”

SQLAlchemy 和 PyMySQL 在连接到 AWS RDS 后拒绝连接到“localhost”

如何修复“连接到 localhost:6379 的错误 111。当我启动 rq-worker 时连接被拒绝?

Docker:无法连接到localhost端口80:连接被拒绝

OSX:Chrome 无法连接到 .localhost-domains。拒绝连接