15

我刚刚在创建 RESTful WCF 服务时注意到,WebInvoke属性上的 Method 参数区分大小写(需要大写字母)。

所以,

[WebInvoke(Method = "Delete")]

不等于

[WebInvoke(Method = "DELETE")]

这个错误导致ProtocolException

System.ServiceModel.ProtocolException:远程服务器返回意外响应:(405)方法不允许。

我想知道 .NET 框架中是否有一组常量,我应该在上面的示例中使用它们来代替“DELETE”。我当然可以定义自己的一组常量,但如果感觉就像框架中可能存在的东西,我只是想念它。

4

2 回答 2

12

有点间接,但有System.Net.WebRequestMethods.Http常数:

public const string Connect = "CONNECT";
public const string Get = "GET";
public const string Head = "HEAD";
public const string MkCol = "MKCOL";
public const string Post = "POST";
public const string Put = "PUT";

但没有“删除”-建议您自己制作...

令人讨厌的是,有一个System.Web.HttpVerb,但它是internal,所以不可用 - 而且它是一个枚举,所以要在属性中使用名称,你需要一些hackery。

于 2009-02-01T09:54:09.103 回答
0

System.Web.Mvc 命名空间具有 HttpVerbs。 https://msdn.microsoft.com/en-us/library/system.web.mvc.httpverbs(v=vs.118).aspx 参考可以在Assemblies, Extensions下选择

于 2017-02-14T13:45:18.017 回答