gpt4 book ai didi

c# - WCF REST 和 QueryString,错误的 UriTemplate?

转载 作者:行者123 更新时间:2023-11-30 15:05:17 24 4
gpt4 key购买 nike

您好,我有一个简单的 WCF REST 服务,我需要通过如下所示的查询字符串获取一些参数。

page=1&rp=10&sortname=id&sortorder=asc&query=&qtype=Application

我的 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 检查完整的请求提出请求时。

关于c# - WCF REST 和 QueryString,错误的 UriTemplate?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9191006/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com