以下是我使用 OWIN 创建的示例自托管 Rest API 代码。
它正在我的本地机器上运行。
我已将其托管在 aws-ec2 中,并以管理员身份启动。
我可以从实例内部访问 Rest API(使用 chrome/IE),将 localhost 作为 URL。
但是,当我用实例的公共 DNS(在实例的浏览器中运行)替换本地主机时,收到错误请求无效主机名。
当我尝试从本地计算机(浏览器/邮递员)的实例浏览器外部访问 Rest Api 时,它返回状态 0。
复制下面的代码。
class Program {
static void Main(string[] args) {
const string BaseUri = "http://localhost:65435";
Console.WriteLine("Starting web Server...");
WebApp.Start<Startup>(BaseUri);
...
}
}
public class Startup {
public void Configuration(IAppBuilder app) {
var webApiConfiguration = ConfigureWebApi();
app.UseWebApi(webApiConfiguration);
}
private HttpConfiguration ConfigureWebApi() {
var config = new HttpConfiguration();
config.Routes.MapHttpRoute(
"DefaultApi",
"api/{controller}/{id}",
new { id = RouteParameter.Optional });
return config;
}
}
public class CompaniesController : ApiController {
public IEnumerable<Company> Get() {
return new List<Company>(){
new Company() { Id = 1, Name = "Microsoft" },
new Company() { Id = 2, Name = "Amazon" }
};
}
}
我创建了一个 Windows Server 2012 R2 - AWS EC2 实例。
配置实例:
- 允许所有入站和出站流量。
- 打开所有端口。
- 我已禁用 Windows 防火墙
- 我尝试从本地计算机 cmd 中 ping DNS 名称,并且成功。
- Web API 正在使用,端口号 - 65435(临时端口)
- Owin 版本 - 5.2.3.0,.Net 版本 - 4.5(4.5.2 安装在 EC2 实例上)
- 将代码中的“localhost”更改为 public-dns(同样的问题仍然存在)和 ip-address(引发异常 - “调用目标已引发异常。”)
请帮我配置这个。
你正在开始WebApp
在本地主机上:
http://localhost:65435
它是在环回适配器上启动的,而不是在您尝试从外部访问的实际以太网适配器上启动的。你需要用服务器的ip来启动它。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)