c# - 在 ASP.NET MVC 中按发布的内容类型进行路由

标签 c# .net asp.net-mvc asp.net-mvc-routing

我有一个固定的 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/

相关文章:

c# - 在 asp.net 应用程序中将今天的日期存储为静态值有什么缺点吗?

带有对象的树的 C# 路径列表

c# - Windows-phone-7、MYSQL 数据库和 PHP 之间的通信,使用 JSON 数组?

.net - 如何通过.NET Framework源代码进行调试?

c# - 如何在 C# 中删除带有空格的字符串中的前导 0

c# - 对同一 http 主机的多个同时请求

c# - 在 C# 和 WCF 中具有存储库模式的 Web 服务?

javascript - 如何在 MVC 中隐藏警告消息

c# - Error parsing xml 语法错误

javascript - Inversify.js - Reflect.hasOwnMetadata 不是函数