ログインが必要な公開 Web サイトを構築しており、これまで asmx-services を使用してきました。ここで、代わりに Wcf データ サービスを試して、jQuery 経由でサービスにクエリを実行したいと考えています。
localhost ではすべて正常に動作しますが、Web サイトを公開すると、次のエラーが発生します。
401 - Unauthorized: Access is denied due to invalid credentials.
エンティティ データ モデルを使用してデータベースをマップし、次のようにデータ モデルに接続する wcf データ サービスを作成しました。
public class MyService : DataService<MyEntities>
{
// This method is called only once to initialize service-wide policies.
public static void InitializeService(DataServiceConfiguration config)
{
config.DataServiceBehavior.MaxProtocolVersion = DataServiceProtocolVersion.V2;
config.SetEntitySetAccessRule("*", EntitySetRights.AllRead);
}
}
ここで、Entity Data Model をデータベースにマッピングするときに MyEntities を指定します。
私が書いたように、localhost ではすべて正常に動作します。次のようにサービスにクエリを実行できます。
$.ajax({
type: "GET",
url: "/OData/MyService.svc/Groups",
data: "{}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (data) {
//some logic
}});
しかし、公開されたバージョンを使用すると、401 エラーが発生します。(ブラウザで直接クエリを書くと同じエラーが発生します)
私は本当に Wcf サービスを使用して環境に優しいので、これを機能させるには本当に助けが必要です。Google を試してみましたが、うまくいきませんでした。サービス、web.config、または IIS で構成を行う必要がありますか?
IIS 7.0 と asp.net 4.0 を使用しています