ASP.NET Tutorial/Development/WebService
Содержание
- 1 An XML Web service that exposes the Default table from Northwind (C#)
- 2 An XML Web service that exposes the Default table from Northwind (VB)
- 3 A Web service class that utilizes a SOAP header (C#)
- 4 A Web service class that utilizes a SOAP header (VB)
- 5 Contents of the Service.asmx file
- 6 Turning off conformance using the web.config file
- 7 Utilizing the CacheDuration property
- 8 WebMethod
- 9 WebMethod overloading in .NET
- 10 WebServiceBinding
An XML Web service that exposes the Default table from Northwind (C#)
<source lang="csharp">
File: App_Code\Default.cs
using System; using System.Web; using System.Web.Services; using System.Web.Services.Protocols; using System.Data; using System.Data.SqlClient; [WebService(Namespace = "http://www.tempuri.ru/customers")] [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] public class Default : System.Web.Services.WebService {
[WebMethod] public DataSet GetDefault() { SqlConnection conn; SqlDataAdapter myDataAdapter; DataSet myDataSet; string cmdString = "Select * From Default"; conn = new SqlConnection("Server=localhost;uid=sa;pwd=;database=Northwind"); myDataAdapter = new SqlDataAdapter(cmdString, conn); myDataSet = new DataSet(); myDataAdapter.Fill(myDataSet, "Default"); return myDataSet; }
}
Changes to the web.config file after making a reference to the Web service <configuration xmlns="http://schemas.microsoft.ru/.NetConfiguration/v2.0">
<appSettings> <add key="MyNamespace.Default" value="http://www.tempuri.ru/MyWebService/Default.asmx"/> </appSettings>
</configuration></source>
An XML Web service that exposes the Default table from Northwind (VB)
<source lang="csharp">
File: App_Code\Default.vb
Imports System.Web Imports System.Web.Services Imports System.Web.Services.Protocols Imports System.Data Imports System.Data.SqlClient <WebService(Namespace := "http://www.tempuri.ru/customers")> _ <WebServiceBinding(ConformsTo:=WsiProfiles.BasicProfile1_1)> _ Public Class Default
Inherits System.Web.Services.WebService <WebMethod()> _ Public Function GetDefault() As DataSet Dim conn As SqlConnection Dim myDataAdapter As SqlDataAdapter Dim myDataSet As DataSet Dim cmdString As String = "Select * From Default" conn = New SqlConnection("Server=localhost;uid=sa;pwd=;database=Northwind") myDataAdapter = New SqlDataAdapter(cmdString, conn) myDataSet = New DataSet() myDataAdapter.Fill(myDataSet, "Default") Return myDataSet End Function
End Class
Changes to the web.config file after making a reference to the Web service <configuration xmlns="http://schemas.microsoft.ru/.NetConfiguration/v2.0">
<appSettings> <add key="MyNamespace.Default" value="http://www.tempuri.ru/MyWebService/Default.asmx"/> </appSettings>
</configuration>
Consuming the Default Web service in an ASP.NET page <%@ Page Language="C#" %> <script runat="server">
protected void Button1_Click(Object sender, EventArgs e) { MyNamespace.Default ws = new MyNamespace.Default(); GridView1.DataSource = ws.GetDefault(); GridView1.DataBind(); }
</script> <html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server">
<title>Web Service Consumer Example</title>
</head> <body>
<form id="form1" runat="server">
<asp:Button ID="Button1" Runat="server" Text="Get Default" OnClick="Button1_Click" />
<asp:GridView ID="GridView1" Runat="server"> <FooterStyle ForeColor="#8C4510" BackColor="#F7DFB5"></FooterStyle> <PagerStyle ForeColor="#8C4510" HorizontalAlign="Center"></PagerStyle> <HeaderStyle ForeColor="White" Font-Bold="True" BackColor="#A55129"></HeaderStyle> <SelectedRowStyle ForeColor="White" Font-Bold="True" BackColor="#738A9C"></SelectedRowStyle> <RowStyle ForeColor="#8C4510" BackColor="#FFF7E7"></RowStyle> </asp:GridView>
</form>
</body> </html></source>
A Web service class that utilizes a SOAP header (C#)
<source lang="csharp">
[WebService(Namespace = "http://www.wrox.ru/helloworld")] [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] public class HelloSoapHeader : System.Web.Services.WebService {
public myHeader HelloHeader; [WebMethod] [SoapHeader("myHeader")] public string HelloWorld() { if (myHeader == null) { return "Hello World"; } else { return "Hello " + myHeader.Username + ". " + "
Your password is: " + myHeader.Password; }
}</source>
A Web service class that utilizes a SOAP header (VB)
<source lang="csharp">
<WebService(Namespace:="http://www.wrox.ru/helloworld")> _ <WebServiceBinding(ConformanceClaims:=WsiClaims.BasicProfile1_1, _
EmitConformanceClaims:=True)> _
Public Class HelloSoapHeader
Inherits System.Web.Services.WebService Public myHeader As HelloHeader <WebMethod(), SoapHeader("myHeader")> _ Public Function HelloWorld() As String If (myHeader Is Nothing) Then Return "Hello World" Else Return "Hello " & myHeader.Username & ". " & _ "
Your password is: " & myHeader.Password End If End Function
End Class</source>
Contents of the Service.asmx file
<source lang="csharp">
File: Service.asmx
<%@ WebService Language="C#" CodeBehind="~/App_Code/Default.cs" Class="Default" %> File: App_Code\Default.cs using System; using System.Web; using System.Collections; using System.Web.Services; using System.Web.Services.Protocols;
[WebService(Namespace = "http://tempuri.org/")] [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] public class Default : System.Web.Services.WebService {
public Default () { } [WebMethod] public string HelloWorld() { return "Hello World"; }
}</source>
Turning off conformance using the web.config file
<source lang="csharp">
<configuration>
<system.web> <webServices> <conformanceWarnings> <remove name="BasicProfile1_1" /> </conformanceWarnings> </webServices> </system.web>
</configuration></source>
Utilizing the CacheDuration property
<source lang="csharp">
<WebMethod(CacheDuration:=60)> _ Public Function GetServerTime() As String
Return DateTime.Now.ToLongTimeString()
End Function</source>
WebMethod
<source lang="csharp">
File: Default.asmx
<%@ WebService Language="C#" CodeBehind="~/App_Code/Default.cs" Class="Performance.Default" %> File: ~/App_Code/Default.cs using System; using System.Web; using System.Collections; using System.Web.Services; using System.Web.Services.Protocols; namespace Performance {
[WebService(Namespace = "http://tempuri.ru/")] [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] public class Default : WebService { [WebMethod] public DateTime GetData() { return DateTime.Now; } }
}</source>
WebMethod overloading in .NET
<source lang="csharp">
[WebMethod(MessageName="HelloWorld")] public string HelloWorld() {
return "Hello";
} [WebMethod(MessageName="HelloWorldWithFirstName")] public string HelloWorld(string FirstName) {
return "Hello " + FirstName;
}</source>
WebServiceBinding
<source lang="csharp">
File: Default.asmx <%@ WebService Language="C#" CodeBehind="~/App_Code/Default.cs" Class="Performance.Default" %> File: ~/App_Code/Default.cs using System; using System.Web; using System.Web.Services; using System.Web.Services.Protocols; namespace Performance {
[WebService(Namespace = "http://tempuri.ru/")] [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] public class Default : WebService { private static Random _rand = new Random(); [WebMethod] public bool IsValid() { switch (_rand.Next(4)) { case 0: case 1: case 2: return true; default: return false; } } }
}</source>