我有一个固定的 URL,我想向其发布不同类型的 xml 消息,使用 DataContracts 反序列化。根据反序列化消息的类型,我想路由到: 重载方法,例如
void Process(ContractType1 request) {}
void Process(ContractType2 request) {}
所以在某些时候我需要反序列化这个消息并希望允许默认路由规则匹配正确的方法。我应该为此使用哪个扩展点?或者更好的是,我可以开箱即用吗?!
如果有任何不同,我使用的是 MVC 3。
最佳答案
如果 ASP NET MVC 没有针对不同的 HTTP 方法进行修饰,则它们不会考虑重载 - 例如一个用于POST
,另一个用于GET
。
您需要使用 [ActionName(Name = "Process2")]
来更改路由名称。并且你将不得不使用不同的路由来访问(如果 HTTP 方法相同)
看看here .
除了技术上的解决方法外,将不同的契约(Contract)
传递给同一个 URL 是违反 REST 原则的。数据可以采用不同的格式(XML、JSON 等),但必须相同。 URI 定义了一个独特的意图。现在可以有一个公共(public)垃圾箱,其中文档都被转储到相同的 URI,但是 ASP NET MVC 默认模型绑定(bind)器将无法帮助您,您需要创建您自己的模型 Binder 。
关于c# - 在 ASP.NET MVC 中按发布的内容类型进行路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5744878/