Я создаю общедоступный веб-сайт, на котором вам нужно войти в систему, и я использую asmx-сервисы до сих пор. Теперь я хочу попробовать сервис данных Wcf и запросить сервис через jQuery.
На localhost все работает нормально, но как только я публикую свой веб-сайт, я получаю эту ошибку:
401 - Unauthorized: Access is denied due to invalid credentials.
Я сопоставил свою базу данных с использованием Entity Data Model, а затем создал службу данных 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-сервисы, поэтому мне очень нужна помощь, чтобы заставить это работать, я пытался в Google, но безуспешно. Нужно ли выполнять какие-либо настройки в моем сервисе или в файле web.config или в IIS?
Я использую IIS 7.0 и asp.net 4.0