- PR -

IEでWebサービス呼び出しでInvalidOperationExceptionエラー

1
投稿者投稿内容
2che
会議室デビュー日: 2005/06/08
投稿数: 5
投稿日時: 2005-06-08 17:16
現在ある参考書を参照しながらWebサービスを勉強しています。asmxファイルを作成して仮想ディレクトリに格納し、ブラウザ(IE)でURLを入力して実行結果を参照したかったのですが、InvalidOperationException「要求形式が認識されません。」との例外が発生します。
 
 以下がソースとブラウザで表示させようとしたURLです。
初歩的な間違いでしたらすいません。ご教授お願いいたします。

'* .asmx **************************************************
<%@ WebService Class="Service1" %>

Imports System.Web.Services

Class Service1

<WebMethod> _
Public Function Add(ByVal x As Integer, _
ByVal y As Integer ) _
As Integer
Dim wk As Integer
wk = x + y
Return wk
End Function

End Class

'* URL **************************************************
http://localhost/Service1.asmx/Add?x=100&y=200

Jubei
ぬし
会議室デビュー日: 2002/03/02
投稿数: 830
お住まい・勤務地: 関西
投稿日時: 2005-06-08 19:32
初期表示のサンプルに書かれていると思いますが、
GET要求ではなくPOST要求にしないとダメなんでは?

_________________
諸農和岳
Powered by Turbo Delphi & Microsoft Visual Studio 2005

十兵衛@わんくま同盟
http://blogs.wankuma.com/jubei/
2che
会議室デビュー日: 2005/06/08
投稿数: 5
投稿日時: 2005-06-09 18:21
書き込みが遅れましてすいません。

前回記述していたGET要求のURLは参考書の記述のコピーです。
しかし、Jubeiさんのスレッド内容をみてURLをちぎっていくと

>http://localhost/Service1.asmx

で、メソッド名にリンクが張られた画面が表示され、そのリンクに飛ぶと

>http://localhost/Service1.asmx?op=Add

メソッド引数が入力できるテキストボックスと「起動ボタン」がついている画面が
表示されました。
引数を入力して起動ボタンを押下すると、参考書と同じ画面(下記内容)が表示されました。

*内容*********************************
<?xml version="1.0" encoding="utf-8" ?>
<int xmlns="http://tempuri.org/">300</int>
**************************************

ありがとうございました。

////////////////////////////////////////////////////////////
しかし、画面遷移後のURLはPOSTなので

>http://localhost/taniguchi/Service1.asmx/Add

と、なっています。
参考書にはブラウザでの実行結果画面がプリントされていますが、URLは

>http://localhost/Service1.asmx/Add?x=100&y=200

となり、冒頭にも「HTTP-GETで実験してみます」とあります。
POST,GETの問題なのか、まさかVS.NETのバージョンが関係
してるのではと思いmsdnサイトを調べたところ

「ブラウザから XML Web サービスへのアクセス」http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/cpguide/html/cpconaccessingwebservicesfrombrowser.asp

で、HTTP-GETで参考書のようなテスト方法がありました。
なぜGETでの実行ができないのでしょうか。
にしざき
ぬし
会議室デビュー日: 2003/06/30
投稿数: 304
投稿日時: 2005-06-10 08:41
HTTP GET を受け付けるように設定していなければ
受け付けなかった気がします。

デフォルトがどちらになっているかは忘れましたが、
うちの machine.config では HttpSoap1.2 と HttpSoap が
設定してあります。
2che
会議室デビュー日: 2005/06/08
投稿数: 5
投稿日時: 2005-06-10 09:42
ありがとうございます。

確かにmachine.configのwebServices要素のprotocols要素は下記のような状態になっていました

<add name="HttpSoap1.2"/>
<add name="HttpSoap"/>
<!--<add name="HttpPost"/> -->
<!--<add name="HttpGet"/> -->

HTTP-GETのみの設定にするとGET要求で実行ができるようになりました。
1

スキルアップ/キャリアアップ(JOB@IT)