我正在建立一个公共网站,您需要登录,我一直在使用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
答案 0 :(得分:0)
错误401是HTTP错误 - 访问被拒绝。
这是在IIS到达服务器端c#代码之前来自IIS。
如何修复它取决于您的身份验证。但基本思想是请求必须包含足够的身份验证信息,以便服务器接受请求。
答案 1 :(得分:0)
我终于让它工作了,指定的用户没有对磁盘的读取权限。有时看起来很难但是很简单。
案件结案。