Я использую службы ria с конечной точкой jsonp. Когда я вызываю свой метод в служебном файле, он отлично работает в ie и firefox, но иногда работает в chrome, и иногда я получаю: «Обратный вызов JavaScript для перекрестного домена не поддерживается в аутентифицированных сервисах». ошибка. Даже я не использую аутентифицированные сервисы.Проблема аутентификации в службах jsonp ria
Вот фрагмент кода о том, что у меня есть.
служба JSONP
[EnableClientAccess(RequiresSecureEndpoint = false)]
public class PPolJsonService : LinqToEntitiesDomainService<PPolAdvEntities>
{
public IQueryable<QuestionEntity> GetCompleteSurvey()
{
............
}
}
Javascript код
function (data) {
var Params = {};
Params.type = 'GET';
Params.url = 'http://127.0.0.1:81/PPolSilverlight-Web-Services-PPolJsonService.svc/JSONP/GetCompleteSurvey;
Params.dataType = 'jsonp';
Params.data = { data:'somedata'};
Params.success = function (data) { };
Params.jsonpCallback = "ppolv2"
$.ajax(Params);
});
В файле web.config моя установка <authentication mode="Forms">
Если установить <authentication mode="None">
Я в состоянии решить все проблемы, связанные с хромом. Но остальная часть приложения нуждается в аутентификации. Поэтому я должен использовать его как «mode = Forms». И, как вы видите, моя служба не использует аутентификацию так,
Почему я получаю эту ошибку и есть ли какое-либо решение?
Примечание:
Кстати у меня есть другие параметры в файле web.config, как
<webHttpEndpoint>
<standardEndpoint crossDomainScriptAccessEnabled="true"
automaticFormatSelectionEnabled="true"/>
</webHttpEndpoint>
или их в clientaccesspolicy.xml
<?xml version="1.0" encoding="utf-8"?>
<access-policy>
<cross-domain-access>
<policy>
<allow-from http-request-headers="*">
<domain uri="http://*"/>
<domain uri="https://*" />
</allow-from>
<grant-to>
<resource path="/" include-subpaths="true"/>
</grant-to>
</policy>
</cross-domain-access>
</access-policy>
, но ни один из них не помогает мне.
Заранее спасибо.
Спасибо за anwer MajoB. Но это не сработало. – serhads
У вас есть служба и веб-сайт, опубликованный на том же сайте iis? если да, попробуйте использовать относительный путь в Params.url. –
К сожалению, этот javascript необходимо звонить с любой веб-страницы. Таким образом, они не находятся на одном и том же сайте iis. – serhads