Asp.net mvc ASP.NET MVC中的XML-RPC

Asp.net mvc ASP.NET MVC中的XML-RPC,asp.net-mvc,Asp.net Mvc,我知道有一个用于.NET的库可以使用XML-RPC,但是有人知道它是否可以在ASP.NET MVC环境中使用吗?如果它与.NET一起使用,它与ASP.NET MVC一起使用。ASP.NET MVC环境只是.NET Framework之上的一个层,因此可以在ASP.NET MVC应用程序中使用.NET构建的任何东西。上述答案是正确的-它将起作用(您只需在MVC应用程序中部署XML RPC端点并直接调用它即可) 然而,如果你的意思是,它是否与MVCs路由和控制器操作一起工作,那么我恐怕答案是“不是没

我知道有一个用于.NET的库可以使用XML-RPC,但是有人知道它是否可以在ASP.NET MVC环境中使用吗?

如果它与.NET一起使用,它与ASP.NET MVC一起使用。ASP.NET MVC环境只是.NET Framework之上的一个层,因此可以在ASP.NET MVC应用程序中使用.NET构建的任何东西。

上述答案是正确的-它将起作用(您只需在MVC应用程序中部署XML RPC端点并直接调用它即可)

然而,如果你的意思是,它是否与MVCs路由和控制器操作一起工作,那么我恐怕答案是“不是没有很多工作”。众所周知的XML RPC库(由cook computing编写,是吗?)基于类似于asmx技术的东西

还有一个wcfxmlrpc组件(我认为更快、更能证明未来),它在编写livewriter后端时使用。但这也不会直接与MVC路由和控制器操作集成

虽然理论上您可以编写ActionFilters、自定义控制器工厂、ModelBinder和(可能)更多,以提供XML Rpc结果等;您最好选择XML RPC实现并直接调用它


不确定这是否添加了有用的内容:)

Cook Computing xml-rpc.net库可用于任何ASP.net项目,包括ASP.net MVC


我试图找到一个将XML-RPC与MVC集成的解决方案,但找不到任何人,所以我自己实现了自定义路由、自定义操作筛选器(将XML-RPC参数转换为操作参数)和自定义操作结果(将响应转换回有效的XML-RPC响应)。请在此处阅读更多信息:


我想添加一个名为“XmlRpcMvc”的项目,该项目是我在2011年启动的。你可以找到那个。随便用叉子叉或做你想做的事;)

它也可以通过NuGet获得:()

可以与ASP.NET MVC一起使用

为XML-RPC服务定义接口,例如:

using CookComputing.XmlRpc;

public interface IStateName
{
  [XmlRpcMethod("examples.getStateName")]
  string GetStateName(int stateNumber);
}
实施服务:

using CookComputing.XmlRpc;

public class StateNameService : XmlRpcService, IStateName
{
  public string GetStateName(int stateNumber)
  {
    if (stateNumber < 1 || stateNumber > m_stateNames.Length)
      throw new XmlRpcFaultException(1, "Invalid state number");
    return m_stateNames[stateNumber - 1];
  }

  string[] m_stateNames
    = { "Alabama", "Alaska", "Arizona", "Arkansas",
        "California", "Colorado", "Connecticut", "Delaware", "Florida",
        "Georgia", "Hawaii", "Idaho", "Illinois", "Indiana", "Iowa", 
        "Kansas", "Kentucky", "Lousiana", "Maine", "Maryland", "Massachusetts",
        "Michigan", "Minnesota", "Mississipi", "Missouri", "Montana",
        "Nebraska", "Nevada", "New Hampshire", "New Jersey", "New Mexico", 
        "New York", "North Carolina", "North Dakota", "Ohio", "Oklahoma",
        "Oregon", "Pennsylviania", "Rhose Island", "South Carolina", 
        "South Dakota", "Tennessee", "Texas", "Utah", "Vermont", "Virginia", 
        "Washington", "West Virginia", "Wisconsin", "Wyoming" };
}
在global.asax.cs中注册自定义路由:

public static void RegisterRoutes(RouteCollection routes)
{
  routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

  routes.Add(new Route("api/statename", new StateNameRouteHandler()));

  // ...

}

通过将浏览器指向处理程序的url来检查一切是否正常工作,例如,从Visual Studio运行时的情况。然后,您应该会看到自动生成的服务帮助页面。如果没有问题,请将您的XML-RPC客户端指向该服务并开始进行调用。

Phil-您对如何执行该操作还有什么意见吗?
public static void RegisterRoutes(RouteCollection routes)
{
  routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

  routes.Add(new Route("api/statename", new StateNameRouteHandler()));

  // ...

}