0

Windows Server2008上のIIS7にWebサイトを展開するのに苦労しています。同じホストでホストされているWCFサービスを呼び出そうとするまで、サイトは正常に機能します。

まったく同じWeb構成などを使用してVisualStudio20008でWebを実行すると、ワークステーションからのサービスですべてがうまく機能します。サーバーBamの仮想ディレクトリにWebを展開するとすぐに。認証エラー。また、両方がWindows2003Serverに展開されている場合もそのまま機能します。これを引き起こしているServer2008の違いは何ですか?ヘルプ!お願いします。

重要な場合、すべてのサービス操作には、ASP.netページの認証済みユーザーのActive Directoryグループメンバーシップが必要であり、次のように装飾されます:[PrincipalPermission(SecurityAction.Demand、Role = "SOAMemberShipService")]

Webサイトから次のエラーが発生します。

認証に失敗したため、セキュリティトークンの要求を満たすことができませんでした。説明:現在のWebリクエストの実行中に未処理の例外が発生しました。エラーとエラーがコードのどこで発生したかについての詳細は、スタックトレースを確認してください。

例外の詳細:System.ServiceModel.FaultException:認証に失敗したため、セキュリティトークンの要求を満たすことができませんでした。

ソースエラー:

行919:
行920:public HSMembersService.MemberSearchResult SearchMembers(HSMembersService.MemberSearch MemberInfoToSearch){行921:return base.Channel.SearchMembers(MemberInfoToSearch); 922行目:} 923行目:}

ソースファイル:c:\ Windows \ Microsoft.NET \ Framework64 \ v2.0.50727 \ Temporary ASP.NET Files \ csrweb \ a4d18657 \ a6d0910d \ App_WebReferences.jgx1svpr.0.cs行:921

スタックトレース:

[FaultException:認証に失敗したため、セキュリティトークンの要求を満たすことができませんでした。] System.ServiceModel.Security.SecurityUtils.ThrowIfNegotiationFault(メッセージメッセージ、EndpointAddressターゲット)+6375432 System.ServiceModel.Security.IssuanceTokenProviderBase`1.ThrowIfFault(メッセージメッセージ、 EndpointAddressターゲット)+25 System.ServiceModel.Security.SspiNegotiationTokenProvider.GetNextOutgoingMessageBody(メッセージincomingMessage、SspiNegotiationTokenProviderState sspiState)+173

[SecurityNegotiationException:呼び出し元はサービスによって認証されませんでした。] System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg、IMessage retMsg)+4596611 System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData&msgData、Int32 type )+1713 HSMembersService.IHSMembersService.SearchMembers(MemberSearch MemberInfoToSearch)+0 HSMembersService.HSMembersServiceClient.SearchMembers(MemberSearch MemberInfoToSearch)in c:\ Windows \ Microsoft.NET \ Framework64 \ v2.0.50727 \ Temporary ASP.NET Files \ csrweb \ a4d18657 \ App_WebReferences.jgx1svpr.0.cs:921 _default.btnSearch_Click(Object sender、EventArgs e)in e:\ CSRWeb \ default.aspx.cs:114 System.Web.UI.WebControls.Button.OnClick(EventArgs e)+131 System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument)+140System.Web.UI。Page.RaisePostBackEvent(IPostBackEventHandler sourceControl、String eventArgument)+39 System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint、Boolean includeStagesAfterAsyncPoint)+3215

ASP.net Webサイトのweb.config(関連するサービス部分):

サービスweb.config:

    <!-- Service Endpoints -->
    <!-- Unless fully qualified, address is relative to base address supplied above -->
    <endpoint address ="" binding="wsHttpBinding" contract="HSMembersService.IHSMembersService" bindingConfiguration="wsHttpBindingConfig">
      <!-- 
          Upon deployment, the following identity element should be removed or replaced to reflect the 
          identity under which the deployed service runs.  If removed, WCF will infer an appropriate identity 
          automatically.
      -->
      <!--<identity>
        <dns value="localhost"/>
      </identity>-->
    </endpoint>
    <!-- Metadata Endpoints -->
    <!-- The Metadata Exchange endpoint is used by the service to describe itself to clients. -->
    <!-- This endpoint does not use a secure binding and should be secured or removed before deployment -->
    <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>
  </service>
</services>
<bindings>
  <wsHttpBinding>
    <binding name="wsHttpBindingConfig" >
      <security mode="Message">
        <message clientCredentialType="Windows" />
      </security>

    </binding>
  </wsHttpBinding>
</bindings>
<behaviors>
  <serviceBehaviors>
    <behavior name="HSMembersService.HSMembersServiceBehavior">
      <!-- To avoid disclosing metadata information, 
      set the value below to false and remove the metadata endpoint above before deployment -->
      <serviceMetadata httpGetEnabled="True"/>

      <serviceAuthorization principalPermissionMode="UseWindowsGroups"         />
      <!-- To receive exception details in faults for debugging purposes, 
      set the value below to true.  Set to false before deployment 
      to avoid disclosing exception information -->
      <serviceDebug includeExceptionDetailInFaults="True" /><!-- Change this before deployment -->
    </behavior>
  </serviceBehaviors>
</behaviors>

4

2 に答える 2

0

これに関連している可能性があります。

于 2009-04-14T18:15:43.023 に答える
0

さて、ここでもMSDNサブスクリプショングループでも答えはありません。

だから、私はすべてを試しました。そして、私はすべてを意味します。数日のように見えた後、実際にはおそらく 20 時間しかかからなかったのですが、うまくいきました。

私がしたことは、サービスファイル(.dll、.svcなど)の物理パスを、wwwrootではなくc:rootから離れたディレクトリに移動することだけで、うまくいきました。もちろん、それを指すように仮想ディレクトリを更新する必要がありました。

なぜこの場所が問題を引き起こしたのですか? IIS7.0/Windows サーバー 2008 は、wwwroot の物理的な場所からのサービスの展開を許可しない何かを変更しますか? そこから別のサービスを展開しようとすることは決してないので、おそらく決して見つけることはありません。

すべてのアカウント/ディレクトリのアクセス許可をトリプルチェックしましたが、新しい物理パスのアクセス許可は古い物理パスのアクセス許可と同じであるため、適切ではありません。

誰かが理由を見つけたり、理由を知っていれば。私/私たちに知らせてください。

ありがとう、

エディ

于 2009-02-04T18:10:12.360 に答える