3

開発中にリモートPCからasp.net mvcサイトを操作する必要性を思いつきました。そこで、IIS Express を使用するように構成しました。

最初に、Windows 認証で発生した問題。私のサイトは Windows ドメインのイントラネットで動作するはずなので、統合 Windows 認証を使用したいと考えていました。How To: Firefox とIIS Express Windows 認証の統合 Windows 認証( bees73 による回答) を使用して、Firefox で動作させることができました。しかし、IExplorer は、localhost の代わりに自分の IP を指定してローカルで開いても、ログイン/パスワードを出力するよう求めます。

IE の問題はまだ解決されていませんが、資格情報を印刷すると、ローカルで動作します。

私の質問は: リモート PC (Firefox (ログイン/パスワードを印刷する必要はありません) と IE (ログインとパスワードを印刷する必要があります) の両方) で自分のサイトを開くと、スタイリングを適用せずにページがレンダリングされます。css が利用できないようです。しかし、エラーは発生しません。

ロードされたページのソースコードには、次の行があります

<link href="/Content/Site.css" rel="stylesheet" type="text/css" />

しかし、Site.css を見ようとすると、内部サーバー エラーが発生したと表示されます。

IIS Express を適切に構成していないと思いますが、それが問題です。問題がなければ、少なくとも IE でログインとパスワードを要求することなく、統合 Windows 認証が機能する必要があったと思います。

だから、私の設定:

  1. プロジェクト自体 - IIS Express へ、Windows 認証 - オン、匿名 - オフ。
  2. netsh http add urlacl url= http://myip:myport user=domainname\mylogin
  3. netsh http add iplisten ipaddres=myip
  4. applicationhost.config : _

バインディング:

<site name="MySite" id="2">
    <application path="/" applicationPool="Clr4IntegratedAppPool">
        <virtualDirectory path="/" physicalPath="D:\..." />
    </application>
    <bindings>
       <binding protocol="http" bindingInformation="*:myport:localhost" />
        <binding protocol="http" bindingInformation="*:myport:myip" />
    </bindings>
</site>

認証:

<sectionGroup name="authentication">
   <section name="anonymousAuthentication" overrideModeDefault="Deny" />
   ...
   <section name="windowsAuthentication" overrideModeDefault="Allow" />
</sectionGroup> 

<authentication>
    <anonymousAuthentication enabled="false" userName="" />
    ...
    <windowsAuthentication enabled="true">
        <providers>
           <add value="Negotiate" />
           <add value="NTLM" />
        </providers>
     </windowsAuthentication>
</authentication>

<add name="AnonymousAuthenticationModule" lockItem="true" />

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

3 に答える 3

4

この問題は、ISS Express の netsh とバインド構成に関連していました。最初は自分の IP でセットアップしたのですが、混乱を招くエラーが発生しました。

Web で何かを検索しているときに、 Setup IIS Expressに出くわしました。すべて同じですが、 netshおよび iis applicationhost.configで pc 名を使用することをお勧めします。

だから、私は追加しました

netsh http add urlacl url=http://MyPCName:MyPort/ user=everyone

<binding protocol="http" bindingInformation="*:MyPort:MyPCName" />

そして奇跡!! 出来た。

IE に関しては、「Windows 認証を使用する」フラグをオフにして機能させる必要がありました。Internet Explorer - Enable Integrated Windows Authenticationに感謝します。それでも、IP が URL で使用されている場合、IE はログインとパスワードを要求します。PC 名を使用すると、サイレント モードで動作します。

Firefox はログインとパスワードを要求する (有効な資格情報を入力すると機能する) か、How To: Firefox と統合 Windows 認証(私の質問に記載) を適用する必要があり、IP と PC 名の両方でサイレントに機能します。

これが他の誰かに役立つことを願っています。

編集

1 つのコメント: 管理者権限で VS2010 を起動する必要がありました。そうでない場合でも、不正な偽装エラーに基づいて HTTP 500 エラーが発生します。したがって、Windows 7 で管理者権限なしで VS2010 によって起動された IIS Express は、正しく動作しないようです。

私が理解している限り、手がかりは IIS_IUSRS に適切なアクセス許可を与えることです。ただし、それまでは管理者権限で VS 2010 を起動する方が簡単です。

于 2012-10-25T06:09:10.220 に答える
2

これは、Cssが配置されているルートパスの解決中にエラーが発生したことが原因である可能性があります。この問題を解決するには、URLヘルパーを試してみてください。

<link rel="stylesheet" type="text/css" href="@Url.Content("~/Content/Site.css")"  media="screen" />

Asp.net開発サーバー(Visual Studio環境)では<link href="/Content/Site.css" rel="stylesheet" type="text/css" />正常に動作しますが、IISでのホスティング中は、相対パスを使用してルートパスを解決することはできません。URLヘルパーの助けを借りて、この問題を解決できます。Firebugを使用すると、リソースのロードエラーがある場合はそれを確認できます。

編集:

セクションの下のweb.configで、 次の<system.web>ように変更します。

 <system.web>
  <identity impersonate="true" userName="ServerName\Administrator" password="password"/>
 </system.web>

ユーザー名とパスワードに適切な値を指定します。アプリケーションがホストされているフォルダーへのIISユーザーグループ(IUSR、 )にフォルダーのアクセス許可を与えることができます([ホストされているフォルダー]を右クリック->タブの下で、ユーザーグループを見つけてアクセス許可を与えることができます)IIS_IUSRPropertiesSecurity

于 2012-10-25T03:59:55.463 に答える
-1

あなたのフォルダにweb.configファイルを置いてみてください。Contentその中に次のコードを入れます。

<?xml version="1.0"?>

<configuration>
    <system.web>
        <authorization>
            <allow users="*" />
        </authorization>
    </system.web>
</configuration>
于 2012-10-25T04:17:02.800 に答える