希望将一些.asmx webservices转换为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();
}
答案 0 :(得分:3)
您是否检查过新的ASP.NET WebAPI?如果你能够将.NET 4作为一个平台,那么这听起来是个不错的选择。您应该能够使用现有的服务实现,几乎不做任何更改。
答案 1 :(得分:2)
我会看一下新的Web API,它目前是ASP.NET MVC 4 beta的一部分(它有一个上线许可证)。以下是Scott Guthrie演示如何使用它:
http://channel9.msdn.com/Events/TechDays/Techdays-2012-the-Netherlands/2364
我应该注意,您不必将您的网站转换为MVC以便使用它。
答案 2 :(得分:1)
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;
}