2

私のグループは、forms-authenticationを使用して内部でホストされているASP.NETMVCWebサイトを構築しています。

ASP.NETMVCWebサイトと同じ仮想ディレクトリでWCFサービスをホストしたいと思います。

私の質問:

フォーム認証なしで、WCFサービスに自由にアクセスできるようにするにはどうすればよいですか。

私の現在の苦境はこれです:

  • 最初にforms-authenticationを使用してWebブラウザーで認証すると、.svcにアクセスしてwsdl情報を確認できます。
  • しかし、wcfTestClient.exeを使用してWCFサービスにアクセスしようとすると、次のエラーが発生します。

エラー: http://localhost/Services/MyService.svcからメタデータを取得できません これがアクセス可能なWindows(R)Communication Foundationサービスの場合は、指定されたアドレスでメタデータ発行が有効になっていることを確認してください。メタデータ発行を有効にするためのヘルプについては、http: //go.microsoft.com/fwlink/?LinkId =65455.WSのMSDNドキュメントを参照してください-メタデータ 交換エラー

4

4 に答える 4

2

mex endpointサービスのweb.configで定義されていますか?テストクライアントはおそらくこれを探しています。

その場合、もう1つの可能性は、servicesフォルダーの認証を無効にすることです。私はこれをテストしたことがありませんが、理論的にはうまくいくかもしれません...

そのため、ウェブサイトの場合はlocalhost、WCFサービスなどを入れlocalhost/services/myservice.svcてください。次に、web.configを/servicesフォルダーに追加します。これにより、認証が上書きされ、すべてが許可されます。

<configuration>
   <authorization>
      <allow users="*" />
   </authorization>
</configuration>
于 2010-02-08T16:39:47.047 に答える
1

フォーム認証を使用しているため、仮想ディレクトリはIISで匿名アクセス用に構成されていると思います。そうは言っても、WCFサービス(* .svcファイルなど)を独自のディレクトリに配置する場合は、メインのweb.configファイルを更新し、場所タグを追加して、サービスを含むディレクトリのフォーム認証を無効にすることができます。また、web.configのセクションにあるWCF構成バインディング設定を介してセキュリティを無効にしてください<system.servicemodel>。まだ存在しない場合は、追加する必要があります。

<bindings>
  <wsHttpBinding>   <!-- one of many possible bindings -->
    <binding name="...">          
      <security mode="None"> <-- allows anonymous access -->
        <message clientCredentialType="None"/> <-- allows anonymous access -->
      </security>
    </binding>
  </wsHttpBinding>
</bindings>
于 2010-02-08T16:57:53.367 に答える
1

.svcファイルを仮想ディレクトリのサブフォルダーに配置できる場合は、Forms Authenticationのpath属性を利用して、異なるレベルの認証でファイルにアクセスできるようにすることができます。これがチュートリアルです。

于 2010-02-08T16:38:47.820 に答える
1

この質問に答えようとしたすべての人に感謝します。

この問題のトラブルシューティングを何時間も行った後、カスタム認証モジュールがクライアントによるメタデータの取得を拒否していることに気付きました。言うまでもなく、私はこのロジックを迂回する必要がありました。

ああ-そして、コードをステップスルーすることは非常に過小評価されています。;)

于 2010-02-09T19:27:34.097 に答える