103

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

httpcontext.current.user.identity.name

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

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

私のWeb構成は次のとおりです。

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

9 に答える 9

216

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

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

解決策は、Web プロジェクトのプロパティを確認し、プロジェクトのトップ レベルを選択した状態で F4 を押してプロジェクト プロパティを取得することでした。プロジェクトを右クリックしてプロパティを選択しないでください。これはまったく別のものです。

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

肉汁のように機能します:)

于 2013-12-31T11:58:27.027 に答える
130

これを調査していると、答えが見つかりましたが、インターネット上で答えが見つからないため、これを共有すると思いました。

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>
于 2013-10-22T10:54:46.457 に答える
41

Visual Studio 2013 および VS15 (ただし、他のすべてのバージョンでも同じであると思います) では、F4 を押して、次の 2 つのプロパティを変更します。 -匿名認証: 無効 - Windows 認証: 有効

于 2014-02-17T19:04:31.977 に答える
38

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

それはうまくいくでしょう。他に何も変更する必要はありません

于 2013-12-11T13:28:56.673 に答える
8

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 ファイルにあるものを上書きできるようになります。

于 2013-10-22T13:43:22.890 に答える
6

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

通常、ローカルでテストするローカル IIS v-directory (またはサイト) があるため、私はこの方法を好みます。この方法で他のサイトに影響を与えることもありません。

Web プロジェクトのプロパティ

于 2014-03-31T23:34:45.343 に答える
1

上記の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
于 2015-04-01T18:16:25.540 に答える
1

F4 でいつもこのパネルにたどり着くとは限りません。また、百聞は一見にしかずとよく言われます。

ここに画像の説明を入力

于 2019-02-18T16:12:06.423 に答える