在IIS7.5上运行的ASP.Net Core RC1应用程序中使用User.Identity.Name

在IIS7.5上运行的ASP.Net Core RC1应用程序中使用User.Identity.Name,iis,iis-7.5,asp.net-core,Iis,Iis 7.5,Asp.net Core,我正在使用ASP.NETCore编写一个内部网站。我在VS2015中创建了该站点,并选择使用windows身份验证。我现在需要访问服务器代码中的当前用户帐户名。我对这一点还很陌生,所以我可能错了,但我认为我应该使用User.Identity.Name?当我看这个的时候,它是空的。我以前一直在使用自托管运行该网站,并在某个地方读到,如果您使用生成的web.cmd入口点托管,这是意料之中的,但在IIS下可以正常工作。我现在在IIS下运行它,但是我看到了相同的行为。有人能指出我遗漏了什么吗 这是我的w

我正在使用ASP.NETCore编写一个内部网站。我在VS2015中创建了该站点,并选择使用windows身份验证。我现在需要访问服务器代码中的当前用户帐户名。我对这一点还很陌生,所以我可能错了,但我认为我应该使用User.Identity.Name?当我看这个的时候,它是空的。我以前一直在使用自托管运行该网站,并在某个地方读到,如果您使用生成的web.cmd入口点托管,这是意料之中的,但在IIS下可以正常工作。我现在在IIS下运行它,但是我看到了相同的行为。有人能指出我遗漏了什么吗

这是我的web.config文件:

<configuration>
  <system.webServer>
    <handlers>
      <add name="httpplatformhandler" path="*" verb="*" modules="httpPlatformHandler" resourceType="Unspecified" />
    </handlers>
    <httpPlatform processPath="..\approot\web.cmd" arguments="--server.urls http://address:5001" stdoutLogEnabled="true" stdoutLogFile="..\logs\stdout.log" startupTimeLimit="3600" forwardWindowsAuthToken="true"></httpPlatform>
  </system.webServer>
</configuration>

IISPlatformHandler模块中有一个bug,它要求您将应用程序的基本URL映射到一个虚拟目录(据我所知,无论如何,解决方案是!!)。令人恼火的是,我在发帖之前遇到了这个问题,但它似乎不起作用。我只能假设我尝试了太多东西,以至于第一轮考试就搞砸了。该网站现在可以在IIS下完美运行

下面是要在startup类中进行的代码更改:

        public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory) {
            app.Map("/SomeBasePath", (app1) => this.ConfigureInternal(app1, env, loggerFactory));
        }

        public void ConfigureInternal(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)       {
             // your original call to Configure here
        }
因此,您基本上是重命名原始的Configure方法,并从执行映射的新Configure方法调用它


假设您的站点与以前一样运行。在进行此更改后,您需要以身份访问它。这对我们的站点来说很好,因此如果需要,我不确定在URL中没有额外节点的情况下如何操作。

我在我的httpPlatform日志文件中收到错误“用户“”登录失败”。设置与您描述的相同。你找到解决办法了吗?找到了。iisplatformhandler模块的当前版本中有一个bug。您需要将要在启动时进行配置的调用包装为将baseurl映射到虚拟目录的调用。我现在将发布一个答案,因为它将对代码片段更有意义。等一下……好了。我不确定这和你的问题是一样的,但值得一试
        public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory) {
            app.Map("/SomeBasePath", (app1) => this.ConfigureInternal(app1, env, loggerFactory));
        }

        public void ConfigureInternal(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)       {
             // your original call to Configure here
        }