ASP.NET Tutorial/Development/WebService

Материал из .Net Framework эксперт
Перейти к: навигация, поиск

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;
            }
        }
        
    }
}