misc.log

日常茶飯事とお仕事と

WebサービスをPOST、GETで呼び出せるようにしてみる

新人研修の一環で、ちょっと古いですがASP.NET Webサービス(拡張子 asmxのファイルが配置されるやつ)を作って、HTMLやPHPから呼んでみるというのをやってみたのですが、すこし上手くいかない部分があったので記録しておきます。どうせ来年またハマるだろうから。

HTTP用ポートをファイアウォールが越えられるようにする

PHPとかApacheでのWebアプリ試作も同じPCでやっていたので、XamppでインストールされたApacheIISがポート80で競合してしまいました。そこで、IIS側のポートを8081に変更したところ、自PC以外から接続不能。まぁこういうときはパーソナルファイアウォールの設定ですよね。ということで下記のサイトを参考にしてTCPのポート8081受信を可能にする設定を新規追加しました。

wiki.mcneel.com

こんな感じです。 f:id:frontline:20191004145050p:plain

WebサービスをPOST/GETに対応させる

これに気づきませんでした。通常、このタイプのWebサービス通信プロトコル、データ送受信の方法としてSOAPを利用します。おそらくSOAPでの通信は標準で設定ONになっているのでしょうけれど、POSTやGETはweb.configに設定を追記する必要がありました。本件は下記のサイトを参考にしました。

mapexinfo.sblo.jp

前半の部分はVisual Studioが生成するものそのままで、長い行のうしろ、「<system.web>」以降が追記した部分です。これで、actionに「~.asmx/methodName」みたいな指定を行ったPOSTやGETによるformからのWebサービス呼び出しが別のPCからでもできるようになりましたし、また、拡張子 asmxファイルを直接開いてのVisual Studioが生成するテストフォームも利用可能になりました。

<?xml version="1.0" encoding="utf-8"?>
<!--
  ASP.NET アプリケーションの構成方法の詳細については、
  https://go.microsoft.com/fwlink/?LinkId=169433 を参照してください
  -->
<configuration>
  <system.web>
    <compilation targetFramework="4.6.1" />
    <httpRuntime targetFramework="4.6.1" />
  </system.web>
  <system.codedom>
    <compilers>
      <compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:default /nowarn:1659;1699;1701" />
      <compiler language="vb;vbs;visualbasic;vbscript" extension=".vb" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.VBCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:default /nowarn:41008 /define:_MYTYPE=\&quot;Web\&quot; /optionInfer+" />
    </compilers>
  </system.codedom>
    <system.web>
    <webServices>
        <protocols>
            <add name="HttpGet"/>
            <add name="HttpPost"/>
        </protocols>
    </webServices>
    </system.web>  
</configuration>

Web API: The Good Parts

Web API: The Good Parts

イラスト図解式 この一冊で全部わかるWeb技術の基本

イラスト図解式 この一冊で全部わかるWeb技術の基本