2012-02-03 144 views
0

我想在VS2010(.NET 4)中使用一种接收三个字符串参数的方法创建一个简单的REST服务。我希望它使用GET和POST(因为3'rd PARAM可能有时相当大)简单REST服务与WCF

在课堂MyREST.cs访问我有这样的代码

[WebGet(UriTemplate = "s={s}&sp={sp}&p={p}")] 
    public string Process(string s, string sp, string p) 
    { 
     // some processing 
     return result; 
    } 

同为POST

当我试着使用一个URL来访问服务像

http://localhost:57129/OneTestREST/s=str1&sp=str2&p=str3 

我得到错误

异常详细信息:System.Web.HttpException:潜在危险 从客户端检测到Request.Path值(&)。

如果我改变属性

[WebGet(UriTemplate = "/{s}/{sp}/{p}")] 

它工作正常。但我想用第一种语法访问它

任何想法为什么会发生这种情况?

谢谢

+0

从[本网站](http://www.cryer.co.uk/brian/mswinswdev/ms_vbnet_server_error_potentially_dangerous.htm)[I] nstead您可以逐页关闭验证功能,您可以全局关闭请求验证(但在这种情况下请务必执行下面的第二项)。要全局关闭请求验证,请将以下内容添加到您的web.config文件中: 这应该在部分中进行。这将关闭应用程序中每个页面的请求验证。 虽然要小心。警告是有原因的。 – kush 2012-02-03 16:49:28

+1

谢谢,我发现该网站,但我不想使用该方法。 – bzamfir 2012-02-03 16:59:46

回答

1
[WebGet] 
public string Process(string s, string sp, string p) 
{ 
    // some processing 
    return result; 
} 

然后

http://localhost:57129/OneTestREST/?s=str1&sp=str2&p=str3 
+0

我试过了,但它什么都没做......它只是将我重定向到缺省服务页面,这是sais“找不到端点。请参阅服务帮助页面,以构建对服务的有效请求。” – bzamfir 2012-02-03 16:55:59

+0

对不起,我忘了[WebGet]属性 – Joe 2012-02-03 17:15:16

+0

我已经使用UriTemplate param属性了(正如你在我的文章中看到的那样)。我应该使用它没有参数,只依靠方法参数? – bzamfir 2012-02-04 10:04:10