无法在IIS上访问aspnet核心应用程序

时间:2017-01-31 13:44:29

标签: asp.net iis dns asp.net-core

我按照官方指南将我的aspnet核心应用程序发布到IIS服务器,当我将IIS的主机名和IP放在我自己机器的hosts文件中时,一切正常。

然而,现在它已经准备就绪,我需要网络上的其他人也可以访问它,所以我将主机名放在网络DNS中,就像我通常对我的所有网站一样。

但是现在我根本无法访问应用程序 - 我认为这是因为IIS-Kest​​rel反向代理,因为IIS服务器现在正在尝试使用DNS A记录查找请求,只是指出自己。

如何使这项工作,以便我可以使用网络DNS记录?

更新

问题似乎是主机名中的特殊字符(特别是ø)。

将绑定和网络DNS更改为不包含此特殊字符的主机名似乎有效。

设置:

http://mysite.domain.dk上的IIS绑定(80)

我们的网络DNS中没有DNS记录,我可以通过将ip / hostname放入我的hosts文件并浏览http://mysite.domain.dk

来访问我的自己的计算机上的应用程序

只要我将A记录放入网络DNS,我就无法联系到它。

我(当然)无法从IIS服务器访问应用程序而服务器主机名中没有任何条目,因为服务器不知道在哪里指向http://mysite.domain.dk - 但是,当我放入绑定时到本地服务器网络IP(192.168.17.73)我可以从服务器和客户端到达它。

放入网络DNS中的A记录我仍然可以从IP到达应用程序 - 服务器和客户端,但无法通过主机名访问它。

修改:代码和设置

Program.cs的

        var host = new WebHostBuilder()
            .UseUrls("http://localhost:4561")
            .UseKestrel()
            .UseContentRoot(Directory.GetCurrentDirectory())                
            .UseIISIntegration()
            .UseStartup<Startup>()
            .Build();

        host.Run();

project.json

{
  "dependencies": {
    "Microsoft.AspNetCore.Diagnostics": "1.1.0",
    "Microsoft.AspNetCore.Server.IISIntegration": "1.1.0",
    "Microsoft.AspNetCore.Server.Kestrel": "1.1.0",
    "Microsoft.Extensions.Logging.Console": "1.1.0",
    "Microsoft.AspNetCore.Mvc": "1.1.0",
    "Microsoft.AspNetCore.Mvc.Formatters.Xml": "1.1.0",
    "Microsoft.AspNetCore.StaticFiles": "1.1.0",
    "Microsoft.EntityFrameworkCore": "1.1.0",
    "Microsoft.EntityFrameworkCore.SqlServer": "1.1.0",
    "Microsoft.EntityFrameworkCore.Tools": {
      "version": "1.1.0-preview4-final",
      "type": "build"
    },
    "SimpleImpersonation": "2.0.1"
  },

  "tools": {
    "Microsoft.AspNetCore.Server.IISIntegration.Tools": "1.0.0-preview2-final",
    "Microsoft.EntityFrameworkCore.Tools": "1.1.0-preview4-final"
  },

  "frameworks": {
    "net452": {
      "frameworkAssemblies": {
        "System.Configuration": "4.0.0.0"
      }
    }
  },

  "buildOptions": {
    "emitEntryPoint": true,
    "preserveCompilationContext": true
  },

  "publishOptions": {
    "include": [
      "wwwroot",
      "web.config",
      "Views",
      "logs",
      "app.config"
    ]
  },

  "scripts": {
    "postpublish": [ "dotnet publish-iis --publish-folder %publish:OutputPath% --framework %publish:FullTargetFramework%" ]
  }
}

的web.config

<?xml version="1.0" encoding="utf-8"?>
<configuration>

  <!--
    Configure your application settings in appsettings.json. Learn more at http://go.microsoft.com/fwlink/?LinkId=786380
  -->
  <configSections>
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
  </configSections>
  <system.webServer>
    <handlers>
      <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified"/>
    </handlers>
    <aspNetCore processPath="%LAUNCHER_PATH%" arguments="%LAUNCHER_ARGS%" stdoutLogEnabled="true" stdoutLogFile=".\logs\stdout" forwardWindowsAuthToken="false"/>
    <httpErrors existingResponse="PassThrough"></httpErrors>
  </system.webServer>

  <entityFramework>
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework">
      <parameters>
        <parameter value="Data Source=---;Initial Catalog=---;User ID=---;Password=---" />
      </parameters>
    </defaultConnectionFactory>
    <providers>
      <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
    </providers>
  </entityFramework>
</configuration>

0 个答案:

没有答案