2011-11-08 2 views
3

私はWindows認証を開発中のMVC3アプリケーション(VS 2010 SP1)で動作させるのに苦労しています。私は、違いがあれば、私の開発マシン(XPの場合はアップグレードするために来年まで)でXPを実行しています。私はまた、VS 2010のデフォルトのWeb開発サーバーとしてIIS Expressを使用していることを言及する必要があります。MVC3のWebページがWindowsの資格情報をIIS Expressに送信しないのはなぜですか?

アップグレードするまで、VSメニューからイントラネットテンプレートを入手できなかったので、私は空のMVC3アプリケーションを使い始めました。昨日のMVC3ツール(OK、少し遅かった)。テンプレートをインストールして検査したら、プロジェクトにDirectoryServicesへの参照を追加し、現在のログオンしているユーザーをページの右上隅に表示するコードを追加しました。グラフィックスによれば、 "Welcome PCE \ dnewman!"と表示されるはずです。

私はこの記事の優秀な指示に従いました:IIS Express Windows Authenticationといくつかの進路を作った。しかし、私は今、私が許可されていないと言って、IIS Expressから401.2エラーを受け取ります...

私は自分のプロジェクトプロパティに入り、匿名認証を有効に設定しました。今すぐウェブページにアクセスできますが、私のページの右上隅に表示されているのは「ようこそ!」です。 - ユーザ名なし。

IEとFirefoxの両方でこれを試しましたが、同じ結果でした。何が$#^ &!私はここで行方不明ですか?それは私がWindowsにログインしていないようだ!どこで問題を探し始める必要がありますか?

以前の雇用者では数年前、Windowsログオン資格情報でユーザーを認証したWindowsフォームアプリケーションを作成しました。その場合、資格情報を送信してからサービス終了時に明示的に認証することに特別な注意を払わなければなりませんでした。ブラウザにGETまたはPOSTごとに資格情報を追加させるために必要なことはありますか?

私のweb.configの内容は次のとおりです。すべてのGlimpse設定用の情報があります。

<?xml version="1.0" 
    encoding="utf-8"?> 
<configuration> 
    <configSections> 
    <section name="glimpse" 
     type="Glimpse.Core.Configuration.GlimpseConfiguration" /> 
    </configSections> 
    <appSettings> 
    <add key="ClientValidationEnabled" 
    value="true" /> 
    <add key="UnobtrusiveJavaScriptEnabled" 
    value="true" /> 
    </appSettings> 
    <system.web> 
    <compilation debug="true" 
      targetFramework="4.0"> 
     <assemblies> 
     <add assembly="System.Web.Abstractions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> 
     <add assembly="System.Web.Routing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> 
     <add assembly="System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" /> 
     <add assembly="System.Web.Helpers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> 
     <add assembly="System.Web.WebPages, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> 
     </assemblies> 
    </compilation> 
    <pages> 
     <namespaces> 
     <add namespace="System.Web.Mvc" /> 
     <add namespace="System.Web.Mvc.Ajax" /> 
     <add namespace="System.Web.Mvc.Html" /> 
     <add namespace="System.Web.Routing" /> 
     <add namespace="System.Web.Helpers" /> 
     <add namespace="System.Web.WebPages" /> 
     </namespaces> 
    </pages> 
    <trace writeToDiagnosticsTrace="true" 
     enabled="true" 
     pageOutput="false" /> 
    <httpModules> 
     <add name="Glimpse" 
     type="Glimpse.Core.Module" /> 
    </httpModules> 
    <httpHandlers> 
     <add path="glimpse.axd" 
     verb="GET,POST" 
     type="Glimpse.Core.Handler" /> 
    </httpHandlers> 
    </system.web> 
    <system.webServer> 
    <security> 
     <authentication> 
     <anonymousAuthentication enabled="false"/> 
     <windowsAuthentication enabled="true" /> 
     </authentication> 
    </security> 
    <modules runAllManagedModulesForAllRequests="true"> 
     <add name="Glimpse" 
     type="Glimpse.Core.Module,Glimpse.Core" 
     preCondition="integratedMode" /> 
    </modules> 
    <validation validateIntegratedModeConfiguration="false" /> 
    <handlers> 
     <add name="Glimpse" 
     path="glimpse.axd" 
     verb="GET,POST" 
     type="Glimpse.Core.Handler,Glimpse.Core" 
     preCondition="integratedMode" /> 
    </handlers> 
    </system.webServer> 
    <system.serviceModel> 
    <bindings> 
     <netTcpBinding> 
     <binding name="NetTcpBinding_IReporting" 
      maxBufferSize="1024000" 
      maxBufferPoolSize="1000000" 
      maxReceivedMessageSize="1024000"> 
      <readerQuotas maxDepth="200" 
        maxStringContentLength="65536" 
        maxArrayLength="32768" 
        maxBytesPerRead="4096" 
        maxNameTableCharCount="16384" /> 
      <security mode="None" /> 
     </binding> 
     <binding name="normalBinding"> 
      <security mode="None" /> 
     </binding> 
     </netTcpBinding> 
    </bindings> 
    <client> 
     <endpoint name="tcpAdminServiceEndpoint" 
      address="net.tcp://PCESRV22.pce.local:9000/ProductionMonitor/AdminService" 
      binding="netTcpBinding" 
      bindingConfiguration="normalBinding" 
      contract="Contracts.IAdmin" /> 
     <endpoint name="tcpMasterDataServiceEndpoint" 
      address="net.tcp://PCESRV22.pce.local:9010/ProductionMonitor/MasterDataService" 
      binding="netTcpBinding" 
      bindingConfiguration="normalBinding" 
      contract="Contracts.IMasterData" /> 
     <endpoint name="tcpReportingServiceEndpoint" 
      address="net.tcp://PCESRV22.pce.local:9030/ProductionMonitor/ReportingService" 
      binding="netTcpBinding" 
      bindingConfiguration="NetTcpBinding_IReporting" 
      contract="Contracts.IReporting" /> 
    </client> 
    </system.serviceModel> 
    <runtime> 
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
     <dependentAssembly> 
     <assemblyIdentity name="System.Web.Mvc" 
         publicKeyToken="31bf3856ad364e35" /> 
     <bindingRedirect oldVersion="1.0.0.0-2.0.0.0" 
        newVersion="3.0.0.0" /> 
     </dependentAssembly> 
    </assemblyBinding> 
    </runtime> 
    <glimpse enabled="true" /> 
</configuration> 

私は、必要に応じて詳細を明かすために喜んでより多くのですが、私は本当にどこまでも探し始めるのか分かりません。私が見つけることができるすべての記事または記事は、この部分がWindows/MVC3/ASP.NETセットアップの一部として行われると仮定しているようです。あなたが参照され、ポスト内のすべての推奨事項に従っている場合は、私が行ったよう

おかげで、デイブ

+0

この回答に記載されている匿名認証を無効にしましたか? http://stackoverflow.com/questions/4762538/iis-express-windows-authentication/7168308#7168308 – jrummell

+0

私は匿名認証を無効にしています。 IIS Expressを使用しているとお伝えしますか?アプリケーションをデバッグするとどうなりますか?あなたのコンストラクタにブレークポイントを置き、 'this.User.Identity'で見つけたものを教えてください – Rastapopulous

+0

最初のコメントに関しては、そうでした。それは私が上で参照したのと同じ投稿によって参照されます。それがうまくいかなかったら、何が起こるのかを確認して空のユーザー名を取得し直しました。私が匿名で有効にしてデバッグすると、this.User.Identityを見ると、私の観測から予想されるもの、つまり空の文字列が得られます。匿名認証を無効にすると、アプリケーションは401.2エラーで停止し、ブレークポイントに達する(Global.asax.csのApplication_Startにあります) – DaveN59

答えて

6

は、あなたは、非稼働混乱になってしまいます。それぞれの答えには独自のメリットがありますが、それらのすべてを適用することは欲求不満で終わるだけです。

すべての質問に答え、私が働いてしまった、マイクロソフトからのポストはここにある:How to Create an Intranet Site Using ASP.NET MVC

保存このリンク、それは...

黄金のだ、私はまた、「追加デプロイ依存性」オプションは、Windowsを破ることができました認証。 「展開可能な依存関係の追加」ダイアログボックスで「Razor構文のASP.NET Webページ」オプションを選択した場合、すぐにWindows認証が破損し、フォーム認証に戻るように見える - 404エラーが表示される/アカウント/ログインを探しています。私はそれを展開する必要はなかった、そのオプションを選択するだけでそれを壊した。それを修正する唯一の方法は、やり直すことです。私はそれが再び働き始めるのに十分なものを取り除くことができず、この行動を引き起こした変化が何であるかを知ることができませんでした。

このブログポストでは、How to Deploy an ASP.NET MVC 3 App to Web Hosting with "\bin Deployment"が保存されました。これは、「デプロイ可能な依存関係の追加」ナンセンスを使用せずに、デプロイするときに必要なアセンブリとWebアプリケーションにそれらを取り込む方法を示しています。

私はこれで誰もがすべての作業をするのに費やした時間を節約したいと思っています。

+0

デプロイ可能な依存関係を追加しました。私の展開に行き、404エラーが見つかりました。私はセットアップで何か間違ったことをしたと仮定します。私のデバッグサイトに戻って、それも停止したことに気づいてください。単に気をつけてください。私はあなたが提案したことを試してみます。 +1 – Doomsknight

+0

この投稿は私の問題を解決するのに役立ちました。 "展開可能な依存関係の追加"(ソース:http://msdn.microsoft.com/en-us/library/gg286946(v = vs.110).aspx)によって行われた被害を手動で元に戻す必要があります。マイクロソフトでは、実際に削除する必要があるファイルについては何も指示していませんが、プロジェクトフォルダ「bin」と「_bin_deployableAssemblies」からファイルを削除した後、プロジェクトを再実行しています。また、内容が 'web.config'の' '(そしておそらく他の場所)に追加されていることに注意してください。 – bennedich

+0

ありがとうございます。これは私のために働いた。私のWebAPIアプリケーションでは、IIS用の「Windows認証」を有効にしましたが、匿名認証を無効にしませんでした。私のUser.Identity.Nameは、後者を行うまで空の文字列でした。 – mwilson

関連する問題