WCF REST and QueryString, wrong UriTemplate?
本文关键字:wrong UriTemplate QueryString REST and WCF | 更新日期: 2023-09-27 18:23:39
嗨,我有一个简单的WCF REST服务,我需要通过querystring获取一些参数,如下所示。
page=1&rp=10&sortname=id&排序顺序=asc&查询=&qtype=应用程序
我的UriTemplate不工作,这里出了什么问题?到目前为止,只是试图获取页面参数。你知道uri应该是什么样子吗?
[OperationContract]
[WebInvoke(Method = "POST",
BodyStyle = WebMessageBodyStyle.WrappedRequest,
ResponseFormat = WebMessageFormat.Json,RequestFormat = WebMessageFormat.Json,
UriTemplate = "/?page={page}")]
[System.Web.Script.Services.ScriptMethod(ResponseFormat = System.Web.Script.Services.ResponseFormat.Json)]
JSONData GetLogList(string page);
这是我的服务代码
public class LogService : ILog
{
[System.Web.Script.Services.ScriptMethod(ResponseFormat = System.Web.Script.Services.ResponseFormat.Json)]
public JSONData GetLogList(string page)
{
var logContext = new LogViewDataContext();
var logsList = from logs in logContext.Logs select logs;
//return logsList.Cast<Log>().ToString();
var baseData = new JSONData();
baseData.page = Int32.Parse(page ?? "1");
baseData.total = logsList.Count();
var cells = new ArrayList();
var tmplist = new List<JSONDataRow>();
foreach(var log in logsList)
{
var row = new JSONDataRow();
row.id = log.ID;
cells.Add(value: log.Date);
cells.Add(value: log.Application);
cells.Add(value: log.Server);
cells.Add(value: log.Message);
row.cell = cells;
tmplist.Add(row);
}
int x = Int32.Parse(page);
int pageSize = 10;
baseData.rows = tmplist.Skip((x - 1) * pageSize).Take(pageSize).ToList();
return baseData;
}
}
这是调用服务的javascript。
<script type="text/javascript">
$(document).ready(function() {
$("#logGrid").flexigrid({
type: 'POST',
url: 'http://MyWeb/Services/LogService.svc/',
contentType: "application/json; charset=utf-8",
dataType: "json",
colModel: [
{ display: 'Date', name: 'Date', width: 40, sortable: true, align: 'left' },
{ display: 'Application', name: 'Application', width: 150, sortable: true, align: 'left' },
{ display: 'Server', name: 'Server', width: 150, sortable: true, align: 'left' },
{ display: 'Message', name: 'Message', width: 250, sortable: true, align: 'left' }
],
searchitems: [
{ display: 'Date', name: 'Date' },
{ display: 'Application', name: 'Application', isdefault: true },
{ display: 'Server', name: 'Server' }
],
sortname: "id",
sortorder: "asc",
usepager: true,
title: "test",
useRp: true,
rp: 10,
showTableToggleBtn: false,
resizable: false,
width: 700,
height: 370,
singleSelect: true
});
});
</script>
你能按如下方式设置你的URITemplate吗:
URITemplate="/GetLogList?page={page}"
然后你从jquery的URL应该是这样的:
http://MyWeb/Services/LogService.svc/GetLogList?page=1
更新:
如果您想要查询字符串中的其他参数,只需将它们附加到URI模板中即可
例如:
URITemplate="/GetLogList?page={page}&sortorder={sortorder}"
然后只需要你的方法就可以得到这个参数
JSONData GetLogList(string page, string sortorder);
在提出请求时,试着与Fiddler一起检查完整的请求。