Преобразование веб-службы .asmx C # в REST - PullRequest
1 голос
/ 15 марта 2012

Хотите конвертировать некоторые веб-сервисы .asmx в 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();

    }

Ответы [ 3 ]

3 голосов
/ 15 марта 2012

Вы уже использовали новый ASP.NET WebAPI ?Похоже, это был бы хороший выбор, если вы можете ориентироваться на .NET 4 в качестве платформы.Вы должны иметь возможность использовать существующую реализацию службы практически без изменений.

2 голосов
/ 15 марта 2012

Я бы посмотрел на новый веб-API, который в настоящее время является частью бета-версии ASP.NET MVC 4 (у него есть действующая лицензия). Вот Скотт Гатри, демонстрирующий, как его использовать:

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

Я должен отметить, что вам не нужно конвертировать ваш веб-сайт в MVC, чтобы использовать это.

1 голос
/ 23 ноября 2018

Asmx-файл также можно использовать для создания остальных 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;

}
...