在 VS 中使用附加参数调试 REST 服务
Posted
技术标签:
【中文标题】在 VS 中使用附加参数调试 REST 服务【英文标题】:Debug REST Service with additional parameters in VS 【发布时间】:2017-09-25 00:51:15 【问题描述】:我正在实现一个 REST 服务,它还需要额外的参数。我的问题是我在调试时无法进入特定方法。我将相关过程附加到 VS 并且一次调用调试工作正常。让我们先看看是什么导致了我的问题:
[OperationContract]
[WebGet(RequestFormat = WebMessageFormat.Json,
ResponseFormat = WebMessageFormat.Json,
UriTemplate = "/mrn/PatNr")]
List<LaborDataContract> LaborResultDetailsByPatNr(string PatNr);
[OperationContract]
[WebGet(RequestFormat = WebMessageFormat.Json,
ResponseFormat = WebMessageFormat.Json,
UriTemplate = "/mrn/PatNr&FromDate=FromDate&ToDate=ToDate")]
List<LaborDataContract> LaborResultDetailsByPatNrDatePeriod(string PatNr, string fromDate, string todate);
上述方法已经很好地实现了。
此服务调用正常工作:
http://localhost:50358/UszDataService/mrn/10171098
调用上面的URI我可以进入代码,所以调试工作正常。
但如果我调用以下 URI,调试总是会进入上述方法,而不是合同中定义的方法:
http://localhost:50358/UszDataService/mrn/10171098&FromDate=2017-03-01&Todate=2017-03-03
令人困惑的是,在被调用方法的参数(PatNr)中,当我检查内容时,我看到以下内容:
"10171098&FromDate=2017-03-01&Todate=2017-03-03"
我是否错过了定义具有多个参数的合同的内容?
非常感谢任何帮助。
问候 桑德罗
【问题讨论】:
【参考方案1】:你需要从 ?用于第一个查询参数,然后使用 & 用于下一个查询参数
http://localhost:50358/UszDataService/mrn/10171098?FromDate=2017-03-01&Todate=2017-03-03
【讨论】:
嗨 Andreas 感谢您的快速回复 :) Arrghh...是的,我明白了,已修复。但它仍然调用了错误的方法。将 url 步骤校准到只有一个参数的方法中 @SandroColletti 这两个模板实际上是相同的 url,这就是原因。查询参数不定义 url。这个localhost:50358/UszDataService/mrn/… 和localhost:50358/UszDataService/mrn/… 是一样的。您将不得不更改第二个模板 另外,您不需要模板中的查询参数。只需将它们作为参数,它就会从查询参数中提取它们 ahhhhh...我明白了,我不明白你在上一次回复中的意思。您能否提供一些额外的解释?会很棒。 如果你想使用查询参数而不是url参数,那么你不需要在url模板中定义它们,你只需要将它们放在方法的参数列表中。UriTemplate = "/mrn2/PatNr")] List<LaborDataContract> LaborResultDetailsByPatNrDatePeriod(string PatNr, string fromDate, string todate);
这应该没问题以上是关于在 VS 中使用附加参数调试 REST 服务的主要内容,如果未能解决你的问题,请参考以下文章