Имам WCF услуга с функция, наречена GetTrackingLink:
[WebInvoke(Method = "GET", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)]
public BasicResponse GetTrackingLink(string orderID)
{
BasicResponse response = new
if (orderID == null)
response.Status = "null";
else
response.Status = "not null";
return response;
}
Извиквам тази функция от друга страница, използвайки следния скрипт:
$.ajax({
type: 'GET',
url: 'http://localhost:14113/Service1.svc/GetTrackingLink',
crossDomain: true,
global: true,
dataType: 'jsonp',
data: {
"orderID": "006-0000001"
},
success: function (result) {
console.log("success");
},
error: function (result) {
console.log("error");
}
};
Обаждането е наред и данните се изпращат правилно към GetTrackingLink. Проблемът е, че активирах WCF проследяване, използвайки следната конфигурация:
<system.diagnostics>
<sources>
<source name="System.ServiceModel" switchValue="Critical, Error, Warning, Information, ActivityTracing" propagateActivity="true">
<listeners>
<add name="traceListener" type="System.Diagnostics.XmlWriterTraceListener" initializeData="C:\inetpub\logs\RAFProdTraces2.svclog"></add>
</listeners>
</source>
<source name="System.ServiceModel.MessageLogging">
<listeners>
<add name="messages" type="System.Diagnostics.XmlWriterTraceListener" initializeData="C:\inetpub\logs\RAFProdTracesMessages2.svclog" />
</listeners>
</source>
</sources>
...and after each call to GetTrackingLink, I find in RAFProdTraces2.svclog the following error: System.Xml.XmlException: Encountered unexpected character 'j'.
Знам, че това се случва, защото JSONP изпраща обратното извикване със заявката, която изглежда така:
GET /Service1.svc/GetTrackingLink?callback=jQuery1102024896297114901245_1383152659468&orderID=006-0000001
Следователно „j“ от „jQuery“ кара диагностиката на WCF да хвърли изключение (това е „j“, защото го замених с други знаци многократно и новите хвърлени изключения имаха знаците, които използвах, за да заменя „j“ с ).
Въпросът ми е има ли някакъв начин да накарам системната диагностика да анализира правилно заявката и да игнорира частта "callback=jQuery1102024896297114901245_1383152659468"?
Или има някакъв друг начин да се отървете от това изключение?
Благодаря ви предварително.