1

Umbraco内にカスタムWCFサービスを作成しました。サービスはServiceフォルダにあり、正常に機能しているようです(電話をかけることができ、適切に応答します)。ここで、ユーザーがサービスを呼び出すときに自分自身を認証するようにします。

これを行うために、これらの行をweb.config:に追加しました。

<system.serviceModel>
<serviceHostingEnvironment multipleSiteBindingsEnabled="true" aspNetCompatibilityEnabled="true" />
 <bindings>
  <webHttpBinding>
    <binding name="RaceManBinding">
      <security mode="None" />
    </binding>
  </webHttpBinding>
</bindings>
<services>
  <service name="RaceManagerAdmin.RaceManDataService" behaviorConfiguration="RaceManBehavior">

    <endpoint address=""
              binding="webHttpBinding"
              contract="System.Data.Services.IRequestHandler" />
  </service>
</services>
<behaviors>
  <serviceBehaviors>
    <behavior name="RaceManBehavior">
      <serviceCredentials>
        <userNameAuthentication userNamePasswordValidationMode="MembershipProvider"
                                membershipProviderName="UmbracoMembershipProvider" />
      </serviceCredentials>
    </behavior>
  </serviceBehaviors>
</behaviors>
</system.serviceModel>

私のサービスが呼び出されたら、Umbracoメンバーシッププロバイダーを使用してユーザーを認証する必要があります。

私のクライアントは、次のようなネットワーククレデンシャルオブジェクトを作成することでこれを特定します。

var a = new RaceEntities(new Uri("http://localhost:40406/umbraco/Webservices/RaceManDataService.svc")) { Credentials = new NetworkCredential("admin", "secret") };

調べてみるとHTTPContext.Current、認証されたユーザーは見当たりません。

私は何が間違っているのですか?

フレデリク

4

1 に答える 1

1

HttpContextを介してIDにアクセスするには、ASP.Net互換性を有効にする必要があります。

<system.serviceModel>
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true"/>
</system.serviceModel>

この質問への回答は、別の方法に言及しています:WCFサービスでHttpContext.Current.User.Usernameにアクセスする方法

于 2013-02-10T14:44:53.027 に答える