我正在阅读在VS 2010 vb.net上创建的网站项目,他们在同一个项目中实现了webservice.asmx,以便在javascript方法中调用。换句话说:webservice没有实现为API,它是一个webservice.asmx,我可以在其中添加调用数据库的方法,这些方法用于javascript函数。我的问题是:
HttpContext.Current.Session("UserID") = userId
。我对这个web服务有点困惑,我知道webservice在服务器上运行并在应用程序中用作API ...这是我第一次使用web服务和网站编写项目,谢谢。
答案 0 :(得分:2)
调用WebService比使用PostBack快得多,因此如果您只想对网站进行部分更新,WebService是一个很好的选择(如果您从头开始创建项目,那么& #39; d使用Web API而不是ASMX WebService)。当然,您必须将结果集成到客户端的Web页面中。如果您希望异步请求导致UI中的更改,您还可以在ASPX页面上使用UpdatePanel。
将WebService托管在与Web前端相同的应用程序中以避免CORS问题也很常见。
如果将WebMethod属性上的EnableSession
设置为true,WebService也可以访问用户的会话。有关一些陷阱,请参阅this question。
由于对WebService的请求是单独的请求,因此它无法直接访问服务器上的页面控件(使用C#/ VB.NET代码读取),但您可以更改HTML文档树客户端使用JavaScript。
如果需要在页面和WebService之间共享服务器上的代码,则应在辅助程序/业务逻辑类中创建单独的方法,这些方法由页面和WebService调用。
举一个例子,如果页面和WebService都需要从数据库中获取数据,那么您将数据库访问的代码从ASPX页面移动到一个单独的类中(这对于许多其他原因)并在ASPX页面和WebService中使用该类。