移动JSONP WCF回调参数的位置
本文关键字:位置 参数 回调 JSONP WCF 移动 | 更新日期: 2023-09-27 18:05:07
我试图配置我的web服务,回调参数是一个前缀,而不是调用的后缀。我想改变这一点的原因是因为我正在使用的一些预构建的teleerik组件以回调作为前缀调用它。
[JavascriptCallbackBehavior(UrlParameterName = "callback")]
public class Service : IService { }
这是我的服务合同:
[OperationContract]
[WebInvoke(Method = "GET",
RequestFormat = WebMessageFormat.Json,
ResponseFormat = WebMessageFormat.Json,
BodyStyle = WebMessageBodyStyle.Bare,
UriTemplate = "updatedata/models={inRecords_}")]
CurrentBatch[] UpdateData(string inRecords_);
现在当我调用它的时候,我把它命名为
http://localhost:8000/Service/console/json/currentbatch/updatedata/models=myModelsHere?callback=myCallBack
但是我真正想要调用它的方式是(但截至目前,我得到一个404说没有找到端点)
http://localhost:8000/Service/console/json/currentbatch/updatedata/?callback=myCallBack&models=MyModelsHere
我甚至尝试将服务契约属性更改为
UriTemplate = "updatedata/&models={inRecords_}")]
但是我仍然得到一个404,说没有找到端点。
我能做些什么来解决这个问题,这样我的回调参数得到前缀,我可以调用它。
http://localhost:8000/Service/console/json/currentbatch/updatedata/?callback=myCallBack&models=MyModelsHere
MSDN页面也没有给出关于更改顺序的信息。http://msdn.microsoft.com/en-us/library/system.servicemodel.web.javascriptcallbackbehaviorattribute.urlparametername (v = vs.110) . aspx
最终删除
[JavascriptCallbackBehavior(UrlParameterName = "callback")]
将服务契约更改为
[WebInvoke(Method = "GET",
RequestFormat = WebMessageFormat.Json,
ResponseFormat = WebMessageFormat.Json,
BodyStyle = WebMessageBodyStyle.Bare,
UriTemplate = "/?callback={callback}&models={rec}")]
Stream InsertData(string callback, string rec);
,然后输出像;
WebOperationContext.Current.OutgoingResponse.ContentType = "application/javascript";
string serialized = JSONSerializationHelper.Serialize<CurrentBatch[]>(new CurrentBatch[] { new CurrentBatch() { GroupName = "hello" } });
return new MemoryStream(Encoding.UTF8.GetBytes(callback+ "(" + serialized + ");"));
返回正确格式的JSONP WCF
谢谢那个没用的家伙,他否决了我的合法问题…