我已经部署了我的c#,asp.net 5,mvc 6应用程序到windows 2008服务器.我已经启动了dnx web,它正在监听端口5000,从本地计算机访问时工作正常.

如何让它侦听非本地主机请求?

另外,这question不是这个的复制品...它指的是asp.net在托管时预RC1.事实上我有一个.ini格式.现在,它是JSON,我找不到任何关于它应该包含什么的文档.

P.P.S.真正的解决方案是对相关问题的不可接受的answer,并提出了大量警告.步骤:

  1. 根据链接的答案更改project.json.
  2. 将项目发布到服务器.
  3. 在服务器上,转到.\Approot\src\YourProject文件夹并在那里打开命令窗口.
  4. 运行dnx web-它将失败
  5. 运行dnu restore分钟
  6. 运行dnu构建`
  7. 运行"dnx web"-web服务器现在应该可以正常启动

P.S. For people upvoting this question. It's outdated. Very badly outdated!

它适用于早期版本的.净核心.这个问题和答案当然不适用于当前版本的框架(例如2.x、3.x)

推荐答案

Kestrel服务器使用的默认配置文件是hosting.json.在不同的测试版中,该名称被多次更改.如果您将now project.json与下面的"command"部分一起使用

"commands": {
    "web": "Microsoft.AspNet.Server.Kestrel"
}

然后,在从命令行启动服务器的过程中,通过

dnx web

将读取文件hosting.json.档案

{
    "server.urls": "http://0.0.0.0:5000"
}

将服务器配置为在每个IP4地址上侦听5000.配置

{
    "server.urls": "http://::5000;http://0.0.0.0:5000"
}

将通知监听5000个IP4和IP6地址.

可以通过使用ASPNET_ENV环境变量或使用--config myconfig1.json(或config=myconfig1.json)来指定替代配置文件.例如,你可以使用

SET ASPNET_ENV=Development

并创建具有特定配置的hosting.Development.json个文件.或者,您也可以将project.json

"commands": {
    "web": "Microsoft.AspNet.Server.Kestrel"
    "webProd": "Microsoft.AspNet.Server.Kestrel --config prod.json"
}

并按使用方式启动服务器

dnx webProd

我必须另外提醒您,您可能需要允许额外的收听和注册(开始dnx web).这是必需的,因为防火墙和监听新TCP/HTTP端口的本地安全性.如下所示应该 for each 人(IPv4和IPv6)进行5000端口的本地注册和侦听:

netsh http add iplisten ipaddress=0.0.0.0:5000
netsh http add iplisten ipaddress=::5000
netsh http add urlacl url=http://+:5000/ user=\Everyone

为了更安全,您可以调整上述配置以授予最低权限.

UPDATED:谢谢@BlaneBunderson.可以使用*代替IP地址(如http://*:5000)来侦听来自任何接口的any个IP4和IP6地址.你应该小心,不要使用这些东西.

  • http://*:5000;http://::5000
  • http://::5000;http://*:5000
  • http://*:5000;http://0.0.0.0:5000
  • http://*:5000;http://0.0.0.0:5000

因为它需要注册IP6地址::或IP4地址0.0.0.0 twice.

对应于the announcement

从技术上讲,任何不是"localhost"或有效IPv4或

我认为这种行为将来可能会改变.因此,我建议只使用*:50000.0.0.0:5000::5000表格注册任何IT地址.

UPDATED 2: ASP.NET Core RC2更改(请参见the announcement)加载默认值的行为.用户必须在Main中进行更改才能加载来自hosting.json的设置和命令行参数.下面是一个用法示例

public static void Main(string[] args)
{
    var config = new ConfigurationBuilder()
        .SetBasePath(Directory.GetCurrentDirectory())
        .AddJsonFile("hosting.json", optional: true)
        .AddEnvironmentVariables(prefix: "ASPNETCORE_")
        .AddCommandLine(args)
        .Build();

    var host = new WebHostBuilder()
        .UseUrls("http://*:1000", "https://*:1234", "http://0.0.0.0:5000")
        .UseEnvironment("Development")
        .UseConfiguration(config)
        .UseKestrel()
        .UseContentRoot(Directory.GetCurrentDirectory())
        .UseIISIntegration()
        .UseStartup<Startup>()
        .Build();

    host.Run();
}

上面的代码使用三个绑定:默认情况下使用"http://*:1000""https://*:1234""http://0.0.0.0:5000",而不是默认情况下使用默认端口5000(确切地说,使用http://localhost:5000)..UseConfiguration(config)的呼叫被拨打after .UseUrls.因此,从hosting.json加载的配置或命令行会覆盖默认选项.如果删除.SetBasePath(Directory.GetCurrentDirectory())行,则hosting.json将从编译应用程序DLL的同一目录(例如bin\Debug\netcoreapp1.0)加载.

可以像这样使用执行

dotnet.exe run --server.urls=http://0.0.0.0:5000

覆盖默认设置(从UseUrls开始)和hosting.json"server.urls"属性设置(如果存在).

同样,可以通过设置环境变量来覆盖ULR设置

set ASPNETCORE_SERVER.URLS=http://localhost:12541/

然后应用程序的默认启动使用dotnet.exe run将使用http://localhost:12541/进行绑定.

您可以找到here个使用HTTPS绑定的示例.

REMARK:在ASP的更高版本中,环境变量的名称从ASPNETCORE_SERVER.URLS更改为ASPNETCORE_URLS.NET(请参阅ASP.NET Core 3.1的文档).

Asp.net相关问答推荐

WebResource.axd 上的填充无效且无法删除异常

HttpRuntime.Cache[] 与 Application[]

/应用程序中的服务器错误. ASP.NET

带有 Web 套接字的 SignalR

获取没有主机的 url 部分

加载特定 UpdatePanel 后如何调用客户端 javascript 函数

为什么默认情况下不允许 GET 请求返回 JSON?

无法加载文件或程序集 'System.Web.Mvc,版本 = 3.0.0.0,Elmah.MVC 问题

对布尔查询字符串参数使用true或1

Devexpress 或 Telerik Controls 比较

asp.net 中的 Eval() 有什么用

MVC 3视图中的当前上下文中不存在名称'HTML'

您使用哪个 .NET Memcached 客户端,EnyimMemcached 与 BeITMemcached?

MVC 4 - Razor - 将变量传递到 href url

HttpContext.Current 在 MVC 4 项目中未解决

如何避免 ASP.NET MVC 中的 HttpRequestValidationException 呈现导致异常的相同视图

投票有什么问题?

在 Asp.Net Core 中动态更改连接字符串

ContentResult 与字符串

Application_Start 和 Application_OnStart 之间的区别