繁体   English   中英

如何制作一个可以接受来自外部站点的请求的ASP.NET MVC控制器?

[英]How do I make an ASP.NET MVC controller that can take requests from an external site?

我想要一个像

public ActionResult UnlockAssets ( string psd ) 
{
    // ... 
}

外部站点可以调用并从中返回JSON。 这可能吗? 如果是这样,我应该从哪里开始?

您可能需要Web API( http://www.asp.net/web-api/overview/getting-started-with-aspnet-web-api/tutorial-your-first-web-api

这是一个简单的例子

using System;
using System.Linq;
using System.Net;
using System.Web.Http;


 public class DocumentsController : ApiController
{
    public IHttpActionResult UnlockAssets (string psd )
    {
        var documents = new DocumentRepo();
        if (!documents.Exists(psd))
        {
            return NotFound();
        }else{
            documents.unlock(psd)
            return Ok(product);
        }
    }
}

是的,例如,外部站点可能会通过Ajax调用您的控制器。

外部站点将具有Ajax的Javascript函数,该函数将调用url:

http://www.yourwebsite.com/yourcontrollername/UnlockAssets?psd=value

您的响应可以是JSON,您可以使用ActionResult签名并返回JSON,但格式可能不正确,并且标头响应标头可能不正确,请不要说您对请求者/客户端有JSON响应。

因此,这将是您控制器的正确ASP.NET MVC签名方法

[HttpGet] //or [HttpPost] or both
public JsonResult UnlockAssets ( string psd ) 
{
    return Json(new { foo = "blah"}); 
    //or
    return Json(someinstanceofaclassofyours); 
}

您不需要像有人建议的那样使用Web API,您可能更喜欢Web API,但实际上,它仅取决于适合您的条件,时间表,客户端调用服务器时的需求等,架构的复杂性,客户的需求。

普通的ASP.NET MVC应用程序控制器可以在简单的体系结构(甚至是复杂的体系结构)中充当“ API”,并且可以很好地满足外部客户端的需求。 该控制器可以为您的ASP.NET MVC站点提供View服务器,以及将JSON返回给外部调用方。 如果那个Controller似乎是组织架构的正确方法,那就好了。

在做出体系结构决策时,当您构建供客户端使用的实际API时,您可能会认为Web API更合适,该API会提供文档,为客户端调用者提供各种方法,并且功能强大。 Web API也可以用作客户端调用的简单方法。 没有正确或错误的选择,它只是工作的正确工具。

我要说的是,如果您已经将模型,实体框架与ASP.NET MVC应用程序交织在一起,并且只是想尝试向外部客户端公开的方法,则您不会看到MVC应用程序快速增长并退出市场手,只需使用控制器即可。 否则,通过将Web API添加到您现有的MVC项目中或最好将新的Web API项目添加到您的解决方案中来使用Web API。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM