web-dev-qa-db-ja.com

VS2013でデバッグするときの認証の問題-IIS Express

Visual Studio 2013でデバッグするときに、Windowsユーザー名を取得しようとしています。

httpcontext.current.user.identity.name

これを開発サーバーで実行すると正常に動作し、以前のバージョンのVisual Studioでデバッグモードで実行すると正常に動作します。

私の問題は-Visual Studio 2013でこれを実行すると、空の文字列が表示されます。

私のウェブ設定は次のとおりです。

<system.web>
    <authentication mode="Windows"/>
    <identity impersonate="false"/>
    <authorization>
       <allow users="*"/>
    </authorization>
    <compilation debug="true" strict="false" explicit="true" targetFramework="4.0"/>
    <customErrors mode="Off"/>
</system.web>
102
Neil Watson

私がこれを研究していたとき、私は私の答えを見つけましたが、インターネットで答えを見つけることができないので、私はこれを共有したいと思いました:

Applicationhost.configファイルを変更して問題を修正しました。ファイルは「\ My Documents\IISExpress\config」フォルダーに保存されました。

VS2013は私のweb.configファイルを無視し、異なる認証方法を適用していたようです。

ファイルのこの部分を次のように変更する必要がありました。実際、anonymousAuthenticationをfalseに、windowsAuthenticationモードをtrueに変更しただけです。

<authentication>

  <anonymousAuthentication enabled="false" userName="" />

  <basicAuthentication enabled="false" />

  <clientCertificateMappingAuthentication enabled="false" />

  <digestAuthentication enabled="false" />

  <iisClientCertificateMappingAuthentication enabled="false">
  </iisClientCertificateMappingAuthentication>

  <windowsAuthentication enabled="true">
    <providers>
      <add value="Negotiate" />
      <add value="NTLM" />
    </providers>
  </windowsAuthentication>

</authentication>
128
Neil Watson

VS 2012からVS 2013にアップグレードしたばかりで、現在のユーザーID(HttpContext.User.Identity)は匿名として送信されていました。

IIS express applicationhost.configを変更してみましたが、違いはありません。

解決策は、Webプロジェクトのプロパティを確認し、プロジェクトの最上位が選択されているときにF4を押してプロジェクトプロパティを取得することでした。プロジェクトを右クリックしてプロパティを選択しないでください。これはまったく異なるものです。

匿名認証を無効に、Windows認証を有効に変更します。

肉汁のような作品:)

213
Toby Simmerling

Visual Studio 2013およびVS15(ただし、他のすべてのバージョンでも同じ場合は推測します)でF4を押し、この2つのプロパティを変更します:-匿名認証:Disable-Windows認証:Enable

41
ThaNet

プロジェクトのVS2013 F4で、プロパティウィンドウを表示し、匿名アクセスを無効にし、「Windows認証」を有効にします

その後、動作します。他に何も変更する必要はありません

39
James Pressley

VS 2015はこれを変更します。 Webプロジェクトに.vsフォルダーが追加され、applicationhost.configがそこにありました。提案された変更を行い(ウィンドウ認証= true、anon = false)、空白ではなくユーザー名の配信を開始しました。

9
Tom McDonald

C:\ Users [userid]\Documents\IISExpress\configフォルダーにあるapplicationHost.configファイルを開きます。このファイル内で、anonymousAthenticationおよびwindowsAuthenticationのoverrideModeDefaultを「Allow」に変更します

 <sectionGroup name="security">
                <section name="access" overrideModeDefault="Deny" />
                <section name="applicationDependencies" overrideModeDefault="Deny" />
                <sectionGroup name="authentication">
                    <section name="anonymousAuthentication" overrideModeDefault="Allow" />
                    <section name="basicAuthentication" overrideModeDefault="Deny" />
                    <section name="clientCertificateMappingAuthentication" overrideModeDefault="Deny" />
                    <section name="digestAuthentication" overrideModeDefault="Deny" />
                    <section name="iisClientCertificateMappingAuthentication" overrideModeDefault="Deny" />
                    <section name="windowsAuthentication" overrideModeDefault="Allow" />
                </sectionGroup>

次に、AnonymousAuthenticationModuleおよびWindowsAuthenticationModuleのlockItemを「false」に変更します

  <system.webServer>
            <modules>
                <!--
                <add name="HttpCacheModule" lockItem="true" />
-->
                <add name="DynamicCompressionModule" lockItem="true" />
                <add name="StaticCompressionModule" lockItem="true" />
                <add name="DefaultDocumentModule" lockItem="true" />
                <add name="DirectoryListingModule" lockItem="true" />
                <add name="IsapiFilterModule" lockItem="true" />
                <add name="ProtocolSupportModule" lockItem="true" />
                <add name="HttpRedirectionModule" lockItem="true" />
                <add name="ServerSideIncludeModule" lockItem="true" />
                <add name="StaticFileModule" lockItem="true" />
                <add name="AnonymousAuthenticationModule" lockItem="false" />
                <add name="CertificateMappingAuthenticationModule" lockItem="true" />
                <add name="UrlAuthorizationModule" lockItem="true" />
                <add name="BasicAuthenticationModule" lockItem="true" />
                <add name="WindowsAuthenticationModule" lockItem="false" />

これらの変更を行うと、既存のWeb構成設定がIIS ExpressのapplicationHostファイルの内容をオーバーライドできます。

8
ngiunta

Webプロジェクトのプロジェクトプロパティを変更し、左側のタブから[Web]を選択して、[サーバー]ドロップダウンを[ローカルIIS]に変更することもできます。新しい仮想ディレクトリを作成し、IISマネージャーを使用して、必要に応じてサイト/アプリプールをセットアップします。

通常、ローカルでテストするためのローカルIIS vディレクトリ(またはサイト)があるため、この方法をお勧めします。この方法で他のサイトにも影響を与えることはありません。

Web Project Properties

5
ScottLenart

上記のuser3149240によって正しい答えが提供されているようです。ただし、Neil Watsonが指摘したように、applicationhost.configファイルはここで使用されています。

実際には、VSプロパティペインまたは別の場所にあるファイルに変更を加えることができます。 applicationhost.configファイルの下部近くには、一連の場所要素があります。 IIS Expressの各アプリには、これらのいずれかがあるようです。 UIの設定を変更すると、ファイルのこのセクションが更新されます。そのため、UIを使用して設定を変更するか、このファイルを変更できます。

匿名認証がオフでWindows認証がオンの例を次に示します。

<location path="MyApp">
    <system.webServer>
        <security>
            <authentication>
                <windowsAuthentication enabled="true" />
                <anonymousAuthentication enabled="false" />
            </authentication>
        </security>
    </system.webServer>
</location>

これはVS UIで次と同等です:

Anonymous Authentication: Disabled
Windows Authentication: Enabled
1
EricksonG

F4が常にこのパネルに来るとは限りません。また、写真は千の言葉に値すると言われます。

enter image description here

0
Weihui Guo