2016-04-08 9 views
0

ASP.Net Coreを使用してイントラネットサイトを作成しています。 VS2015でサイトを作成し、Windows認証を使用するように選択しました。私は今私のサーバーコードで現在のユーザーアカウント名にアクセスする必要があります。私はこれにかなり新しいので、間違っている可能性がありますが、私はUser.Identity.Nameを使用するべきだと思いますか?私はこれを見ると、それはnullです。以前は自己ホスティングを使ってサイトを実行していましたが、生成されたweb.cmdエントリポイントを使用してホスティングしていて、IISの下で正常に動作していれば、これが予想される場所を読んでいました。私は今、IISの下でそれを実行していますが、私は同じ動作を見ている。誰かが私が行方不明に私を指摘できますか?ASP.NetのUser.Identity.Nameを使用するIIS7.5で動作するRC1アプリケーションのコア

これは私のweb.configファイルである:サイトはアイデンティティの問題から離れて、この設定を使用してIISの下で実行されている大丈夫

<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> 

。 ISSの中で私は、サイトからアクセス認証設定を使用してサイトのWindows認証が、無効にすべてを持って、それが必要なの場合はビュー

機能、ここでは、依存関係、コマンドやフレームワークと私のproject.jsonファイルのセクションです:

"dependencies": { 
    "Microsoft.AspNet.Diagnostics": "1.0.0-rc1-final", 
    "Microsoft.AspNet.IISPlatformHandler": "1.0.0-rc1-final", 
    "Microsoft.AspNet.Mvc": "6.0.0-rc1-final", 
    "Microsoft.AspNet.Mvc.TagHelpers": "6.0.0-rc1-final", 
    "Microsoft.AspNet.Server.Kestrel": "1.0.0-rc1-final", 
    "Microsoft.AspNet.StaticFiles": "1.0.0-rc1-final", 
    "Microsoft.AspNet.Tooling.Razor": "1.0.0-rc1-final", 
    "Microsoft.Extensions.Configuration.FileProviderExtensions" : "1.0.0-rc1-final", 
    "Microsoft.Extensions.Configuration.Json": "1.0.0-rc1-final", 
    "Microsoft.Extensions.Logging": "1.0.0-rc1-final", 
    "Microsoft.Extensions.Logging.Console": "1.0.0-rc1-final", 
    "Microsoft.Extensions.Logging.Debug": "1.0.0-rc1-final", 
    "Microsoft.VisualStudio.Web.BrowserLink.Loader": "14.0.0-rc1-final", 
    "EntityFramework.Core": "7.0.0-rc1-final", 
    "EntityFramework.MicrosoftSqlServer": "7.0.0-rc1-final", 
    "EntityFramework.Commands": "7.0.0-rc1-final", 
    "EntityFramework.MicrosoftSqlServer.Design": "7.0.0-rc1-final", 
    "System.DirectoryServices.Linq": "1.2.2.1", 
    "AutoMapper": "4.2.1" 
    }, 

    "commands": { 
    "web": "Microsoft.AspNet.Server.Kestrel", 
    "ef" : "EntityFramework.Commands" 

    }, 

    "frameworks": { 
    "dnx451": { 
     "dependencies": { 
      "Services": "1.0.0-*" 

     } 
    } 
    }, 
+0

「ユーザーのログインに失敗しました」というエラーが表示されます。私のhttpPlatformログファイルで、あなたが説明したのと同じ設定をします。あなたは解決策を見つけましたか? – Bastyon

+0

はい。現在のバージョンのiisplatformhandlerモジュールにはバグがあります。ベースルルを仮想ディレクトリにマップする呼び出しで、起動時にConfigureへの呼び出しをラップする必要があります。私は今すぐ答えを投稿するでしょう、それはコード断片でより意味をなさないでしょう。 1つの瞬間... –

+0

完了。それはあなたが持っているのと同じ問題だとは思っていませんが、ショットに値する –

答えて

0

IISPlatformHandlerモジュールには、アプリケーションのベースURLを仮想ディレクトリにマップする必要があるバグがあります(これは私のソリューションだと思いますが!!)。むしろ不愉快なことに私は質問を投稿する前にこれを見つけましたが、うまくいかないようでした。私は最初のラウンドで私のテストをうんざりさせてしまったので、多くのことを試していたと思うだけです。

 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メソッドからそれを呼び出している:サイトでは、今お使いの起動クラスで作成するコードの変更です。ここIIS

の下で完璧に動作しますマッピング。

サイトが以前にhttp://webserver:1234/Homeとして実行されていたとします。この変更の後、http://webserver:1234/SomeBasePath/Homeとしてアクセスする必要があります。これは私たちのサイトではうまくいきました。だから、必要ならば、URLに余分なノードがなくてもどうやったらいいのか分かりません。

関連する問題