DoboWiki
Top
> .NETプログラミング研究/76 をテンプレートにして作成
.NETプログラミング研究/76 をテンプレートにして作成
開始行:
#title(Webサービスを作成する)
#navi(.NETプログラミング研究)
#contents
*.NETプログラミング研究 第76号 [#b0d59a7e]
**.NET Tips [#f2591077]
**Webサービスを作成する [#y24a1d73]
今回は、XML Webサービスを作成する方法を説明します。次回は...
なおWebサービスの作成法については、MSDNの「ASP.NET を使用...
-[[ASP.NET を使用した XML Web サービス>http://msdn2.micro...
***Visual StudioでWebサービスを作成する [#w2857a6e]
まずはVisual Studio 2005を使ってWebサービスを作成する方法...
1.メニューの[ファイル]-[新規作成]-[Webサイト]などにより、...
2.「新しいWebサイト」ダイアログで「ASP.NET Webサービス」...
3.作成されたWebサイトには、「Service.asmx」と「App_Code/S...
「Service.asmx」の中身は、次のようになっています。
VB.NETの場合
#pre{{
<%@ WebService Language="vb" CodeBehind="~/App_Code/Servi...
}}
C#の場合
#pre{{
<%@ WebService Language="C#" CodeBehind="~/App_Code/Servi...
}}
つまり、コードビハインドとなっており、本体のコードはApp_C...
#code(vbnet){{
Imports System.Web
Imports System.Web.Services
Imports System.Web.Services.Protocols
<WebService(Namespace:="http://tempuri.org/")> _
<WebServiceBinding(ConformsTo:=WsiProfiles.BasicProfile1_...
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGe...
Public Class Service
Inherits System.Web.Services.WebService
<WebMethod()> _
Public Function HelloWorld() As String
Return "Hello World"
End Function
End Class
}}
#code(csharp){{
using System;
using System.Web;
using System.Web.Services;
using System.Web.Services.Protocols;
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1...
public class Service : System.Web.Services.WebService
{
public Service () {
//デザインされたコンポーネントを使用する場合、次...
//InitializeComponent();
}
[WebMethod]
public string HelloWorld() {
return "Hello World";
}
}
}}
注意:.NET Framework 1.1以下ではWebServiceBindingAttribut...
補足:「別のファイルにコードを書き込む」をオフにしてWebサ...
4.これですでに立派なWebサービスが作成されています。現時点...
5.これに独自のWebサービスメソッドを追加してみましょう。こ...
追加するメソッドのコードは次のようなものです。
#code(vbnet){{
<WebMethod()> _
Public Function ToUpper(ByVal str As String) As String
Return str.ToUpper()
End Function
}}
#code(csharp){{
[WebMethod]
public string ToUpper(string str)
{
return str.ToUpper();
}
}}
6.さらにXML名前空間を独自のものに変更します。ここでは、XM...
このようにして変更された「Service.cs」や「Service.vb」は...
#code(vbnet){{
Imports System.Web
Imports System.Web.Services
Imports System.Web.Services.Protocols
<WebService(Namespace:="https://dobon.net/services/")> _
<WebServiceBinding(ConformsTo:=WsiProfiles.BasicProfile1_...
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGe...
Public Class Service
Inherits System.Web.Services.WebService
<WebMethod()> _
Public Function HelloWorld() As String
Return "Hello World"
End Function
<WebMethod()> _
Public Function ToUpper(ByVal str As String) As String
Return str.ToUpper()
End Function
End Class
}}
#code(csharp){{
using System;
using System.Web;
using System.Web.Services;
using System.Web.Services.Protocols;
[WebService(Namespace = "https://dobon.net/services/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1...
public class Service : System.Web.Services.WebService
{
public Service()
{
//デザインされたコンポーネントを使用する場合、次...
//InitializeComponent();
}
[WebMethod]
public string HelloWorld()
{
return "Hello World";
}
[WebMethod]
public string ToUpper(string str)
{
return str.ToUpper();
}
}
}}
7.Webブラウザで「Service.asmx」のURLを開くと、「サービス...
Visual Studioでこのページを表示させるには、F5キーや、ツー...
サービスヘルプページでは、サポートされているWebサービスメ...
8.このように作成されたWebサービスは、SOAPに対応しています...
http://localhost/Service/Service.asmx?WSDL
つまり、ASMXのURLの末尾に「?WSDL」を付加したものとなりま...
***Visual Studioを使わないでWebサービスを作成する [#v24b4...
Visual Studioを使わない場合も、上記で紹介したようなファイ...
前と全く同じでは面白くありませんので、コードビハインドと...
#code(vbnet){{
<%@ WebService Language="VB" Class="WebService" %>
Imports System.Web
Imports System.Web.Services
Imports System.Web.Services.Protocols
<WebService(Namespace:="https://dobon.net/services/")> _
<WebServiceBinding(ConformsTo:=WsiProfiles.BasicProfile1_...
Public Class WebService
Inherits System.Web.Services.WebService
<WebMethod()> _
Public Function ToUpper(ByVal str As String) As String
Return str.ToUpper()
End Function
End Class
}}
#code(csharp){{
<%@ WebService Language="C#" Class="WebService" %>
using System;
using System.Web;
using System.Web.Services;
using System.Web.Services.Protocols;
[WebService(Namespace = "https://dobon.net/services/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1...
public class WebService : System.Web.Services.WebService
{
[WebMethod]
public string ToUpper(string str)
{
return str.ToUpper();
}
}
}}
基本的な事柄の説明は以上です。ここからは上記で示したコー...
***WebServiceAttribute属性 [#re44d788]
Webサービスを実装したクラスには、WebServiceAttribute属性...
WebServiceAttributeのNamespaceプロパティには、XML名前空間...
WebServiceAttribute.Nameプロパティには、Webサービスの名前...
WebServiceAttribute.Descriptionプロパティには、Webサービ...
***WebServiceBindingAttribute属性 [#o5a46942]
Visual Studio 2005からは、始めに作成されるWebサービスクラ...
-[[ASP.NET 2.0 を使用した WS-I Basic Profile 準拠 Web サ...
***WebMethodAttribute属性 [#oe2e4ba6]
XML Webサービスメソッドとするメソッドは、パブリックとして...
Descriptionプロパティには、メソッドの説明を指定します。
MessageNameプロパティには、Webサービスメソッドに使用され...
''キャッシュを有効にする''
WebMethodAttribute.CacheDurationプロパティを使用すること...
MSDNには、キャッシュ機能を使う際の注意事項が幾つか示され...
補足:サービスヘルプページのテストでHTTP GETが使われるよ...
bool showPost = true;
を
bool showPost = false;
に変更します。
さらに、"Cache-Control"が"no-cache"となっているHTTPヘッダ...
''セッション状態を保存する''
Webサービスでも、WebService.Sessionプロパティを使ってセッ...
これとは別に、アプリケーション状態の保存と取得を行うWebSe...
***HTTP GETを有効にする [#jf6587a8]
デフォルトでは、作成されたWebサービスは、HTTP SOAPと、要...
HTTP GETやPOSTをサポートするには、Machine.configまたはWeb...
#pre{{
<configuration>
<system.web>
<webServices>
<protocols>
<add name="HttpPost"/>
<add name="HttpGet"/>
</protocols>
</webServices>
</system.web>
</configuration>
}}
逆にプロトコルのサポートを無効にするには、<remove>要素を...
add要素とremove要素のname属性には次のようなオプションがあ...
|name属性|説明|h
|HttpSoap|HTTP SOAPのサポートを制御する。デフォルトで有効...
|HttpGet|HTTP GETのサポートを制御する。.NET Framework 1.1...
|HttpPost|HTTP POSTのサポートを制御する。.NET Framework 1...
|HttpPostLocalhost|要求元がローカルコンピュータのHTTP POS...
|Documentation|サービスヘルプページを表示するか。デフォル...
このようにしてHTTP GETを有効にしたWebサービスにアクセスす...
例えば、Service.asmxのToUpperメソッドをパラメータ値を「ab...
http://localhost/Service/Service.asmx/ToUpper?str=abcde
HTTP POSTの場合も同様に、ASMXファイルのURLの後に「/(メソ...
***サービスヘルプページが表示されないようにする [#ie8a9e9f]
ASMXファイルをWebブラウザで開くとサービスヘルプページが表...
#pre{{
<configuration>
<system.web>
<webServices>
<protocols>
<remove name="Documentation" />
</protocols>
</webServices>
</system.web>
</configuration>
}}
しかしこれでは、WSDLの生成も無効になります。WSDLを有効に...
次の例では、デフォルトのサービスヘルプページの代わりにbla...
#pre{{
<configuration>
<system.web>
<webServices>
<wsdlHelpGenerator href="blank.html"/>
</webServices>
</system.web>
</configuration>
}}
***複数のデータを返すWebサービスメソッドを作成する [#w333...
複数のデータを返すWebサービスメソッドが必要な場合は、それ...
***例外をスローする [#g6be3e7b]
Webサービスメソッドから例外をスローする場合は、SoapExcept...
SoapExceptionでは、次のようなプロパティを設定できます。Me...
Webサービスメソッドから例外をスローする例を以下に示します。
#code(vbnet){{
<WebMethod()> _
Public Function ToUpper(ByVal str As String) As String
If str.Length = 0 Then
Throw New SoapException("パラメータが空です。", _
SoapException.ClientFaultCode, _
Context.Request.Url.AbsoluteUri)
End If
Return str.ToUpper()
End Function
}}
#code(csharp){{
[WebMethod]
public string ToUpper(string str)
{
if (str.Length == 0)
{
throw new SoapException("パラメータが空です。",
SoapException.ClientFaultCode,
Context.Request.Url.AbsoluteUri);
}
return str.ToUpper();
}
}}
上記の例では、Message、Code、Actorプロパティを設定してい...
-[[XML Web サービスでの例外の処理およびスロー>http://msdn...
**コメント [#aa037ea7]
#comment
//これより下は編集しないでください
#pageinfo([[:Category/.NET]],2006-12-31 (日) 06:00:00,DOB...
終了行:
#title(Webサービスを作成する)
#navi(.NETプログラミング研究)
#contents
*.NETプログラミング研究 第76号 [#b0d59a7e]
**.NET Tips [#f2591077]
**Webサービスを作成する [#y24a1d73]
今回は、XML Webサービスを作成する方法を説明します。次回は...
なおWebサービスの作成法については、MSDNの「ASP.NET を使用...
-[[ASP.NET を使用した XML Web サービス>http://msdn2.micro...
***Visual StudioでWebサービスを作成する [#w2857a6e]
まずはVisual Studio 2005を使ってWebサービスを作成する方法...
1.メニューの[ファイル]-[新規作成]-[Webサイト]などにより、...
2.「新しいWebサイト」ダイアログで「ASP.NET Webサービス」...
3.作成されたWebサイトには、「Service.asmx」と「App_Code/S...
「Service.asmx」の中身は、次のようになっています。
VB.NETの場合
#pre{{
<%@ WebService Language="vb" CodeBehind="~/App_Code/Servi...
}}
C#の場合
#pre{{
<%@ WebService Language="C#" CodeBehind="~/App_Code/Servi...
}}
つまり、コードビハインドとなっており、本体のコードはApp_C...
#code(vbnet){{
Imports System.Web
Imports System.Web.Services
Imports System.Web.Services.Protocols
<WebService(Namespace:="http://tempuri.org/")> _
<WebServiceBinding(ConformsTo:=WsiProfiles.BasicProfile1_...
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGe...
Public Class Service
Inherits System.Web.Services.WebService
<WebMethod()> _
Public Function HelloWorld() As String
Return "Hello World"
End Function
End Class
}}
#code(csharp){{
using System;
using System.Web;
using System.Web.Services;
using System.Web.Services.Protocols;
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1...
public class Service : System.Web.Services.WebService
{
public Service () {
//デザインされたコンポーネントを使用する場合、次...
//InitializeComponent();
}
[WebMethod]
public string HelloWorld() {
return "Hello World";
}
}
}}
注意:.NET Framework 1.1以下ではWebServiceBindingAttribut...
補足:「別のファイルにコードを書き込む」をオフにしてWebサ...
4.これですでに立派なWebサービスが作成されています。現時点...
5.これに独自のWebサービスメソッドを追加してみましょう。こ...
追加するメソッドのコードは次のようなものです。
#code(vbnet){{
<WebMethod()> _
Public Function ToUpper(ByVal str As String) As String
Return str.ToUpper()
End Function
}}
#code(csharp){{
[WebMethod]
public string ToUpper(string str)
{
return str.ToUpper();
}
}}
6.さらにXML名前空間を独自のものに変更します。ここでは、XM...
このようにして変更された「Service.cs」や「Service.vb」は...
#code(vbnet){{
Imports System.Web
Imports System.Web.Services
Imports System.Web.Services.Protocols
<WebService(Namespace:="https://dobon.net/services/")> _
<WebServiceBinding(ConformsTo:=WsiProfiles.BasicProfile1_...
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGe...
Public Class Service
Inherits System.Web.Services.WebService
<WebMethod()> _
Public Function HelloWorld() As String
Return "Hello World"
End Function
<WebMethod()> _
Public Function ToUpper(ByVal str As String) As String
Return str.ToUpper()
End Function
End Class
}}
#code(csharp){{
using System;
using System.Web;
using System.Web.Services;
using System.Web.Services.Protocols;
[WebService(Namespace = "https://dobon.net/services/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1...
public class Service : System.Web.Services.WebService
{
public Service()
{
//デザインされたコンポーネントを使用する場合、次...
//InitializeComponent();
}
[WebMethod]
public string HelloWorld()
{
return "Hello World";
}
[WebMethod]
public string ToUpper(string str)
{
return str.ToUpper();
}
}
}}
7.Webブラウザで「Service.asmx」のURLを開くと、「サービス...
Visual Studioでこのページを表示させるには、F5キーや、ツー...
サービスヘルプページでは、サポートされているWebサービスメ...
8.このように作成されたWebサービスは、SOAPに対応しています...
http://localhost/Service/Service.asmx?WSDL
つまり、ASMXのURLの末尾に「?WSDL」を付加したものとなりま...
***Visual Studioを使わないでWebサービスを作成する [#v24b4...
Visual Studioを使わない場合も、上記で紹介したようなファイ...
前と全く同じでは面白くありませんので、コードビハインドと...
#code(vbnet){{
<%@ WebService Language="VB" Class="WebService" %>
Imports System.Web
Imports System.Web.Services
Imports System.Web.Services.Protocols
<WebService(Namespace:="https://dobon.net/services/")> _
<WebServiceBinding(ConformsTo:=WsiProfiles.BasicProfile1_...
Public Class WebService
Inherits System.Web.Services.WebService
<WebMethod()> _
Public Function ToUpper(ByVal str As String) As String
Return str.ToUpper()
End Function
End Class
}}
#code(csharp){{
<%@ WebService Language="C#" Class="WebService" %>
using System;
using System.Web;
using System.Web.Services;
using System.Web.Services.Protocols;
[WebService(Namespace = "https://dobon.net/services/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1...
public class WebService : System.Web.Services.WebService
{
[WebMethod]
public string ToUpper(string str)
{
return str.ToUpper();
}
}
}}
基本的な事柄の説明は以上です。ここからは上記で示したコー...
***WebServiceAttribute属性 [#re44d788]
Webサービスを実装したクラスには、WebServiceAttribute属性...
WebServiceAttributeのNamespaceプロパティには、XML名前空間...
WebServiceAttribute.Nameプロパティには、Webサービスの名前...
WebServiceAttribute.Descriptionプロパティには、Webサービ...
***WebServiceBindingAttribute属性 [#o5a46942]
Visual Studio 2005からは、始めに作成されるWebサービスクラ...
-[[ASP.NET 2.0 を使用した WS-I Basic Profile 準拠 Web サ...
***WebMethodAttribute属性 [#oe2e4ba6]
XML Webサービスメソッドとするメソッドは、パブリックとして...
Descriptionプロパティには、メソッドの説明を指定します。
MessageNameプロパティには、Webサービスメソッドに使用され...
''キャッシュを有効にする''
WebMethodAttribute.CacheDurationプロパティを使用すること...
MSDNには、キャッシュ機能を使う際の注意事項が幾つか示され...
補足:サービスヘルプページのテストでHTTP GETが使われるよ...
bool showPost = true;
を
bool showPost = false;
に変更します。
さらに、"Cache-Control"が"no-cache"となっているHTTPヘッダ...
''セッション状態を保存する''
Webサービスでも、WebService.Sessionプロパティを使ってセッ...
これとは別に、アプリケーション状態の保存と取得を行うWebSe...
***HTTP GETを有効にする [#jf6587a8]
デフォルトでは、作成されたWebサービスは、HTTP SOAPと、要...
HTTP GETやPOSTをサポートするには、Machine.configまたはWeb...
#pre{{
<configuration>
<system.web>
<webServices>
<protocols>
<add name="HttpPost"/>
<add name="HttpGet"/>
</protocols>
</webServices>
</system.web>
</configuration>
}}
逆にプロトコルのサポートを無効にするには、<remove>要素を...
add要素とremove要素のname属性には次のようなオプションがあ...
|name属性|説明|h
|HttpSoap|HTTP SOAPのサポートを制御する。デフォルトで有効...
|HttpGet|HTTP GETのサポートを制御する。.NET Framework 1.1...
|HttpPost|HTTP POSTのサポートを制御する。.NET Framework 1...
|HttpPostLocalhost|要求元がローカルコンピュータのHTTP POS...
|Documentation|サービスヘルプページを表示するか。デフォル...
このようにしてHTTP GETを有効にしたWebサービスにアクセスす...
例えば、Service.asmxのToUpperメソッドをパラメータ値を「ab...
http://localhost/Service/Service.asmx/ToUpper?str=abcde
HTTP POSTの場合も同様に、ASMXファイルのURLの後に「/(メソ...
***サービスヘルプページが表示されないようにする [#ie8a9e9f]
ASMXファイルをWebブラウザで開くとサービスヘルプページが表...
#pre{{
<configuration>
<system.web>
<webServices>
<protocols>
<remove name="Documentation" />
</protocols>
</webServices>
</system.web>
</configuration>
}}
しかしこれでは、WSDLの生成も無効になります。WSDLを有効に...
次の例では、デフォルトのサービスヘルプページの代わりにbla...
#pre{{
<configuration>
<system.web>
<webServices>
<wsdlHelpGenerator href="blank.html"/>
</webServices>
</system.web>
</configuration>
}}
***複数のデータを返すWebサービスメソッドを作成する [#w333...
複数のデータを返すWebサービスメソッドが必要な場合は、それ...
***例外をスローする [#g6be3e7b]
Webサービスメソッドから例外をスローする場合は、SoapExcept...
SoapExceptionでは、次のようなプロパティを設定できます。Me...
Webサービスメソッドから例外をスローする例を以下に示します。
#code(vbnet){{
<WebMethod()> _
Public Function ToUpper(ByVal str As String) As String
If str.Length = 0 Then
Throw New SoapException("パラメータが空です。", _
SoapException.ClientFaultCode, _
Context.Request.Url.AbsoluteUri)
End If
Return str.ToUpper()
End Function
}}
#code(csharp){{
[WebMethod]
public string ToUpper(string str)
{
if (str.Length == 0)
{
throw new SoapException("パラメータが空です。",
SoapException.ClientFaultCode,
Context.Request.Url.AbsoluteUri);
}
return str.ToUpper();
}
}}
上記の例では、Message、Code、Actorプロパティを設定してい...
-[[XML Web サービスでの例外の処理およびスロー>http://msdn...
**コメント [#aa037ea7]
#comment
//これより下は編集しないでください
#pageinfo([[:Category/.NET]],2006-12-31 (日) 06:00:00,DOB...
ページ名:
▲
▼
[
トップ
] [
新規
|
子ページ作成
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]