0

我的 Web 服务 url 工作正常,现在返回以下错误:UriTemplate 不支持“{}”作为段或查询部分的有效格式。

我通常处理 Visual Web Developer 2010 Express 中的文件。我在他们工作和不工作之间所做的唯一一件事(我能想到的)是我在 Visual Studio 2010 的专业版中处理文件。然后我保存了它们,并打开现在正在 Express 中再次处理它们. (我检查了 .sln 文件,它们是相同的。)

(更新)帖子的其余部分更详细地描述了这个问题,但我认为这是导致问题的原因:VS 2010 Professional 编辑了一个配置文件(或某个文件),这在随后在 Visual 中打开时破坏了解决方案Web 开发人员 2010 速成版。但是我无法弄清楚哪些文件被编辑了。也许有人可以告诉我哪些文件是可疑的。它在 MyRootDirectory/Properties 中没有。我试过那些。

问题详情:

这个 url 以前可以工作,现在它抛出了上面的错误

http://localhost:52631/WebServices/gg.svc/GetStoresForDropdown

这个 url 过去可以工作,现在也返回相同的错误。

http://localhost:52631/WebServices/gg.svc/StoreGroceryTable?UserId=1&StoreId=2

该请求未到达我的代码页。- 那里的断点不会被击中。

这是堆栈跟踪的顶部。我认为,不知何故,我的网址在到达那里之前就被修改了。

[FormatException:UriTemplate 不支持“{}”作为段或查询部分的有效格式。] System.UriTemplateHelpers.IdentifyPartType(String part) +3049859

System.UriTemplateQueryValue.CreateFromUriTemplate(字符串值,UriTemplate 模板)+49

System.UriTemplate..ctor(字符串模板,布尔忽略TrailingSlash,IDictionary`2 additionalDefaults)+1004

这两种方法的 WebGet 属性是:

[WebGetAttribute(UriTemplate = "GetStoresForDropdown", ResponseFormat = WebMessageFormat.Json)]
[WebGetAttribute(UriTemplate = "StoreGroceryTable?UserId={UserId}&StoreId={StoreId}", ResponseFormat = WebMessageFormat.Json)]

我使用以下浏览器得到相同的结果:IE8、Chrome、FireFox

想法?

4

1 回答 1

2

我会寻找任何一种网络方法,不一定是你遇到问题的那种,它有这样的东西:

[WebInvoke(UriTemplate = "(some url)?Param1={}&..."]

很容易声明一个 UriTemplate 而忘记在 {} 中添加参数名称。

于 2012-06-26T19:54:19.437 回答