Wcf数据服务 - 401错误

时间:2010-12-21 19:55:26

标签: jquery wcf authentication http-status-code-401

我正在建立一个公共网站,您需要登录,我一直在使用asmx-services。现在我想尝试Wcf数据服务,并通过jQuery查询服务。

这一切在localhost上运行正常,但是一旦我发布我的网站,我就会收到此错误:

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);

    }
}

在将我的实体数据模型映射到我的数据库时指定了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服务,所以我真的需要帮助来完成这项工作,我已经尝试过谷歌,但没有运气。我是否需要在我的服务或web.config或IIS中进行任何配置?

我正在使用IIS 7.0和asp.net 4.0

2 个答案:

答案 0 :(得分:0)

错误401是HTTP错误 - 访问被拒绝。

这是在IIS到达服务器端c#代码之前来自IIS。

如何修复它取决于您的身份验证。但基本思想是请求必须包含足够的身份验证信息,以便服务器接受请求。

答案 1 :(得分:0)

我终于让它工作了,指定的用户没有对磁盘的读取权限。有时看起来很难但是很简单。

案件结案。