当前位置:  开发笔记 > Android > 正文

在REST WCF URL中使用反斜杠(%5c)

如何解决《在RESTWCFURL中使用反斜杠(%5c)》经验,为你挑选了1个好方法。

我正在WCF上构建一个REST服务,我正在编写的方法之一是GetProfile,它将返回给定用户名的配置文件.用户名将包含用户的域名,因此将具有以下格式:"DOMAIN\username".

因此,我有一个名为Profiles.svc的服务,它具有以下端点设置:

[OperationContract]
[WebGet(UriTemplate = "/{username}", ResponseFormat = WebMessageFormat.Xml)]
IRestResponse GetProfile(String username);

但是,当我尝试访问http://server/profiles.svc/DOMAIN%5cusername(%5c是反斜杠的urlencoded形式)服务时,我收到以下错误:

Server error in '/' Application
HTTP Error 400 - Bad Request

即使在我的GetProfile实现中没有实际定义的代码时也会发生这种情况,因此我认为在WCF尝试将URI绑定到方法时会抛出错误.

是否需要添加到我的Web服务配置中的某些设置才能允许将反斜杠添加到REST WCF服务中的URL中?或者是不允许使用反斜杠?



1> Greg Dean..:

我怀疑他们根本不被允许进入网址的那一部分.只要它们被编码,它们在查询字符串中就可以了.作为一般规则,我不会在url的路径部分放置任何无效的文件名(即?).

也许您可以使用不同的字符来从用户名中删除域.

您还可以将用户名分隔为域名和用户名,并使用正常的路径分隔符'/'.我不熟悉这一点,足以知道你是否这样做是肯定的,但这是我最好的猜测.

[OperationContract]
[WebGet(UriTemplate = "/{domainName}/{username}", ResponseFormat = WebMessageFormat.Xml)]
IRestResponse GetProfile(String domainName, String username);


这似乎是正确的方法(/ {domainName}/{userName}),因为域和名称具有与REST表达良好的层次关系.
推荐阅读
惬听风吟jyy_802
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有