我正在使用帶有jsonp端點的ria服務。當我在服務文件中調用我的方法時,它在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">
我能解決所有的問題用鍍鉻。但其他應用程序需要身份驗證。所以這就是爲什麼我必須使用它作爲「模式=形式」。正如你看到我的服務不使用身份驗證,所以,
爲什麼我得到這個錯誤,是否有任何解決方案呢?
注:
順便說我在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>
在web.config中其他設置,如
<webHttpEndpoint>
<standardEndpoint crossDomainScriptAccessEnabled="true"
automaticFormatSelectionEnabled="true"/>
</webHttpEndpoint>
或這些但他們都不是我的幫助。
在此先感謝。
謝謝anjo MajoB。但它沒有奏效。 – serhads
您是否在同一個iis網站上發佈了服務和網頁?如果是,則嘗試在Params.url中使用相對路徑。 –
不幸的是,這個JavaScript需要從任何網頁的電話。所以他們不在同一個iis網站上。 – serhads