2009-02-22 26 views
11

IISでWebServiceHostFactoryを使用する際に問題が発生しました。WebServiceHostFactoryとIIS認証

"IISで指定された認証スキーム 'IntegratedWindowsAuthentication、Anonymous'。ただし、バインドでは厳密に1つの認証スキームの指定のみがサポートされています。単一の認証方式が使用されます。

I wanted to keep both authentication schemes and managed to do so by not using the factory but setting up the endpoint manualy in web.config.

私の質問はWebServiceHostFactoryは、この結果を得るために何をやっているのですか?私はWebServiceHostFactoryが私の設定で使用したものと同じwebHttpBindingにバインディングを設定するという印象を受けました。

編集: リフレクターでWebServiceHostFactoryを見てきましたが、何も巧妙ではありません。これは、WebServiceHostの単純なファクトリです。

configでエンドポイントを設定してもIISがサービスホストを使用しますか?あるいは、WebServiceHostが設定を違うものにしています。

答えて

3

これは私のために働いたものです。以下に示すように(サービスホストが開かれる前に)早期にダミーのエンドポイントを追加することは、このトリックを行ったようです。 (このMSDNの資料では、このhttp://msdn.microsoft.com/en-us/library/bb412178.aspxを示唆した。)

public class MyWebServiceHost : WebServiceHost 
{ 
    public MyWebServiceHost (Type serviceType, params Uri[] baseAddresses) : base(serviceType, baseAddresses) 
    { 
     // Inserting this dummy endpoint config seemingly does the trick: 
     AddServiceEndpoint(typeof(IMyContract), new WebHttpBinding(), string.Empty); 
    } 

    protected override void ApplyConfiguration() 
    { 
     // Typical programmatic configuration here per: 
     // http://msdn.microsoft.com/en-us/library/aa395224.aspx 
    } 
} 

私はこれを推測しているデフォルトのエンドポイントを作成するため、機能の束をシャットダウンからWebServiceHostを防ぐことができます。 web.config-で

+0

これはしばらく前に尋ねられたので、私はこの回答をテストすることができませんし、問題を回避して新しい仕事を得ましたが、それがうまくいくとすれば、それは十分です。 –

+0

私はMyWebServiceHostを参照する必要があります私は理解していません – JDC

+0

私は同じ問題を抱えていた、私はそれを働かせることができました。 MyWebServiceHostFactoryとMyWebServiceHostという2つのクラスを作成しなければなりませんでした。ファクトリクラスでは、 'ServiceHost CreateServiceHost(Type serviceType、Uri [] baseAddresses)'メソッドをオーバーライドし、 'MyWebServiceHost'のインスタンスを返しました。 'MyWebServiceHost'はこの答えのように見えますが、私は' ApplyConfiguration() 'をオーバーライドしませんでした。 –

1

WebServiceHostFactoryについてはわかりませんが、IIS内でサービスをホストしているようで、複数の認証方法が選択されているようです。 IIS 5または6を使用している場合は、IISに入り、サービスを含むWebサイトまたは仮想ディレクトリのプロパティを表示してみてください。 [ディレクトリセキュリティ]タブに移動し、[匿名アクセスと認証の制御]の下にある[編集]ボタンをクリックし、[匿名アクセス]または[統合Windows認証]のチェックを外します。私はIIS7についてよく分かりません。

+1

問題は、あなたが**デバッグすることができないということである必要はありません。匿名でアクセスした**ウェブサイト。 **不満足な**回避策は、IISでもう一方のスイッチをデバッグする直前に、単一の認証でコンパイルすることです。これは機能しますが、時間を無駄にし、迷惑になります。私は.NET 3.5のサイトが何年も前から開発されているのを見てきました。 .NET 4サイトでは、私の経験は悪化しています。 _(MSBuildファイルからWebサイトの認証を変更する可能性がありますが、それを行う準備ができたタスクが見つかりませんでした。)_ –

+0

これは私のトリックでした。 – Adi

+1

申し訳ありませんが、彼は両方の認証方式を維持したいと言われています...あなたの答えはそれに関して役に立たなかった。 – LDAdams

1

IIS7では、Windows統合認証の設定を管理できる場所が見つからないことがあります。 IIS7管理コンソールで設定を確認するには、次の記事の手順を実行する必要があります。http://msdn.microsoft.com/en-us/library/x8a5axew.aspx(リンクが機能していない場合は、「エラー:統合Windows認証が有効でないためデバッグに失敗しました」というタイトル)。

希望します。

-1

無効セキュリティ>構成タグ

<system.serviceModel> 
    <bindings> 
     <webHttpBinding> 
     <binding> 
      <security mode="None"> 
      <transport clientCredentialType="Windows"/> 
      </security> 
     </binding> 
     </webHttpBinding> 
    </bindings> 
    </system.serviceModel> 

、あなたのWCFサービスは、認証が...それと

+0

これはいくつかのコードです...いくつかの説明をしてください。それは疑問に対する答えではない。 –

+0

答えを提供するときには、(コードサンプルではなく)何らかの形式の説明を提供する必要があります。 –

関連する問題