1

ログインが必要な公開 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 を使用しています

4

2 に答える 2

0

エラー 401 は HTTP エラーです - アクセスが拒否されました。

これは、サーバー側の c# コードに到達する前に IIS から送信されます。

修正方法は、認証の内容によって異なります。ただし、基本的な考え方は、サーバーが要求を受け入れるには、要求に十分な認証情報が含まれている必要があるということです。

于 2010-12-21T21:01:14.570 に答える
0

ようやく機能するようになりました。指定されたユーザーには、ディスクに対する読み取り権限がありませんでした。難しいように思えることもありますが、とてもシンプルです。

ケースを閉じました。

于 2010-12-21T22:44:33.513 に答える