繁体   English   中英

将.asmx C#Web服务转换为REST

[英]Convert .asmx C# Web Service to REST

希望将某些.asmx Web服务转换为REST。 我对WCF样式不感兴趣,如果可以的话,可以使用更简单的方法。 我所有的操作都是CRUD。 我已经阅读了有关REST和HTTPWebRequest和HttpWebResponse的信息,有人知道这样做的简单方法吗? 我的asmx代码在下面。如果有人可以提供帮助,快速的REST服务将不胜感激。 谢谢!

    [WebMethod]
    public Products[] GetProducts()
    {
        ProductDA dataAccess = new ProductDA();
        List<Product> obj = new List<Product>();
        obj = dataAccess.GetProducts();
        return obj.ToArray();

    }

您是否签出了新的ASP.NET WebAPI 听起来,如果您能够将.NET 4作为平台,那将是一个不错的选择。 您应该几乎可以无需更改就可以使用现有的服务实现。

我将看一下新的Web API,它目前是ASP.NET MVC 4 beta的一部分(它具有上线许可证)。 这是Scott Guthrie演示如何使用它:

http://channel9.msdn.com/Events/TechDays/Techdays-2012-the-Netherlands/2364

我应该注意,您不必将网站转换为MVC即可使用。

Asmx文件也可以用于创建REST API(不推荐使用这种方法)。

这可以通过下面的代码片段实现。

[ScriptService]
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]

public class Randezvous : WebService
{
    [WebMethod]
    [ScriptMethod(UseHttpGet = true, ResponseFormat = ResponseFormat.Json)]
    public void getUnitPersonels(string user, string pass, decimal unitNo)
    {
        JavaScriptSerializer serializer = new JavaScriptSerializer();
        Context.Response.Clear();
        Context.Response.ContentType = "application/json";
        #region ..:: Kullanıcı şİfre Kontrol ::..
        if (!(unit == "xxx" && pass == "yyy"))
        {

            string msg = "User or pass is wrong.";
            Context.Response.Write(serializer.Serialize(msg));
            return;
        }
        #endregion

        List<Personels> personels = _units.getUnitPersonels(unitNo);

        string jsonString = serializer.Serialize(personels);
        Context.Response.Write(jsonString);
    }
}

您可以使用下面显示的代码在c#中测试此代码:

using (var client = new HttpClient())
{
    client.DefaultRequestHeaders.Accept.Clear();
    client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

    var builder = new UriBuilder("http://localhost:18511/Randezvous.asmx/getUnitPersonels");
    var query = HttpUtility.ParseQueryString(builder.Query);
    query["unitNo"] = "0";
    builder.Query = query.ToString();
    string url = builder.ToString();

    var result = Task.FromResult(client.GetAsync(url).Result).Result.Content;
    var resultJson = result.ReadAsStringAsync().Result;

}

暂无
暂无

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

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