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