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#)
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>
An XML Web service that exposes the Default table from Northwind (VB)
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">
<div>
<asp:Button ID="Button1" Runat="server" Text="Get Default"
OnClick="Button1_Click" />
<br />
<br />
<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>
</div>
</form>
</body>
</html>
A Web service class that utilizes a SOAP header (C#)
[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 + ". " +
"<br>Your password is: " + myHeader.Password;
}
}
A Web service class that utilizes a SOAP header (VB)
<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 & ". " & _
"<br>Your password is: " & myHeader.Password
End If
End Function
End Class
Contents of the Service.asmx file
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";
}
}
Turning off conformance using the web.config file
<configuration>
<system.web>
<webServices>
<conformanceWarnings>
<remove name="BasicProfile1_1" />
</conformanceWarnings>
</webServices>
</system.web>
</configuration>
Utilizing the CacheDuration property
<WebMethod(CacheDuration:=60)> _
Public Function GetServerTime() As String
Return DateTime.Now.ToLongTimeString()
End Function
WebMethod
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;
}
}
}
WebMethod overloading in .NET
[WebMethod(MessageName="HelloWorld")]
public string HelloWorld() {
return "Hello";
}
[WebMethod(MessageName="HelloWorldWithFirstName")]
public string HelloWorld(string FirstName) {
return "Hello " + FirstName;
}
WebServiceBinding
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;
}
}
}
}