質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
POST

POSTはHTTPプロトコルのリクエストメソッドです。ファイルをアップロードしたときや入力フォームが送信されたときなど、クライアントがデータをサーバに送る際に利用されます。

ASP.NET

ASP.NETは動的なWebサイトやWebアプリケーション、そしてWebサービスを構築出来るようにする為、Microsoftによって開発されたウェブアプリケーション開発フレームワークです。

VB.NET

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

Q&A

1回答

3939閲覧

VB.NetからASP.NetへのPOST処理で405エラーが発生してしまう。

aallaall88

総合スコア20

POST

POSTはHTTPプロトコルのリクエストメソッドです。ファイルをアップロードしたときや入力フォームが送信されたときなど、クライアントがデータをサーバに送る際に利用されます。

ASP.NET

ASP.NETは動的なWebサイトやWebアプリケーション、そしてWebサービスを構築出来るようにする為、Microsoftによって開発されたウェブアプリケーション開発フレームワークです。

VB.NET

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

0グッド

0クリップ

投稿2019/08/30 15:09

編集2019/08/30 23:31

前提・実現したいこと

VB.NetのアプリケーションからPOST処理を行った際に、ASP.Netをクライアントパソコンでデバックしていた際は正常に終了していたが、
サーバのIIS上にASPを配備したところ、POST処理にて405エラーが発生します。
どのように対処すればよいでしょうか。

サーバにURLでアクセスしたところ、フォルダ体系が表示されており、
アプリケーションが起動しているのか不安です。
クライアントデバック時はASPの画面が表示されています。

発生している問題・エラーメッセージ

POST 405エラー

リモート サーバーがエラーを返しました: (405) メソッドは使用できません

該当のソースコード

'HttpWebRequestインスタンス初期化
Dim req As HttpWebRequest = WebRequest.Create(CON_SV)

'エンコーディング Dim enc As System.Text.Encoding = System.Text.Encoding.GetEncoding("utf-8") 'POST送信 req.Method = JsonConst.MET_POST '認証情報 req.Credentials = CredentialCache.DefaultCredentials 'Accept HTTPヘッダー req.Accept = "application/json" 'ContentType HTTPヘッダー req.ContentType = "application/json" 'JSONデータシリアライズ用 Dim jsonSerializer As DataContractJsonSerializer = Nothing '要求データ書き込み Using reqStream As System.IO.Stream = req.GetRequestStream jsonSerializer = New DataContractJsonSerializer(GetType(JsonDataSend)) jsonSerializer.WriteObject(reqStream, 送信情報) End Using 'リソースからの応答取得 Dim resp As HttpWebResponse = req.GetResponse

###サーバサイド(Web.config)
<system.webServer>
<handlers>
<remove name="ExtensionlessUrlHandler-Integrated-4.0"/>
<remove name="OPTIONSVerbHandler"/>
<remove name="TRACEVerbHandler"/>
<remove name="WebDAVModule"/>
<remove name="WebDAV" />
<remove name="PageHandlerFactory-Integrated" />
<add name="PageHandlerFactory-Integrated" path="*.aspx" verb="GET,HEAD,POST,PUT,DELETE" type="System.Web.UI.PageHandlerFactory" resourceType="Unspecified" requireAccess="Script" preCondition="integratedMode" />
<add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0"/>
</handlers>
<modules>
<remove name="TelemetryCorrelationHttpModule"/>
<add name="TelemetryCorrelationHttpModule" type="Microsoft.AspNet.TelemetryCorrelation.TelemetryCorrelationHttpModule, Microsoft.AspNet.TelemetryCorrelation" preCondition="integratedMode,managedHandler"/>
</modules>
</system.webServer>

試したこと

補足情報(FW/ツールのバージョンなど)

.Net Framework4.5
サーバはWindowsServer2008 32bit
クライアントパソコンはWindows10 64bit

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2019/08/30 21:57 編集

クラシック ASP なのか ASP.NET なのか、どっちですか? ASP.NET なら質問のタイトルと本文を ASP.NET に書き直してください。(ASP ではクラシック ASP と誤解されます)
退会済みユーザー

退会済みユーザー

2019/08/30 21:46

405 応答が帰ってきているということは、クライアントからの要求は IIS まで届いていて、そこで許可されてないメソッドと判断されてエラーとなったということのようです。 と言うことは、サーバー側の問題なので、サーバー側のコードも提示してもらわないと、第三者には原因は分からないかと。 特に、POST でダメということですと見当がつきません。(GET を許可してないと言うことなら ASP.NET ではよくある話ですが・・・)
退会済みユーザー

退会済みユーザー

2019/08/30 21:53

Fiddler を使って要求・応答をキャプチャして、その情報を質問欄に追記できませんか?
aallaall88

2019/08/30 23:33

回答頂きありがとうございます。 原因の切り分けとして、405エラーが返ってきているのでIIS自体は問題なしと見受けられます。 アプリケーション(ASP.Net)のデバック時の画面とIISへの参照(localhost)での参照時で画面の見え方が違うのですが、そもそも起動できていない可能性がありますでしょうか。
退会済みユーザー

退会済みユーザー

2019/08/31 00:16 編集

提示してほしいサーバー側のコードというのは、クライアントアプリが要求している url にあるアプリ (Web サービスとか wcf とかの) コードです。 web.config のソースを見せてもらっても何も分かりません。
退会済みユーザー

退会済みユーザー

2019/08/31 00:15

見え方が違うと言われても、どう違うのか環境の違いの具体的な説明や画像もないのではエスパーではない自分には何にもわかりません。ここに書いてある情報が全ての第三者にわかるように十分な情報提供をしてください。
退会済みユーザー

退会済みユーザー

2019/08/31 00:19

まさか静的ファイル (.html など) をPOST 要求してるなんてことはありませんよね?
guest

回答1

0

ハズレかもしれませんが・・・

今提供されている情報から想像してありそうなのは、質問のコメントにも書きましたが、静的ファイル (.html など) をPOST 要求してることが考えられます。

下の画像は、Fiddler のキャプチャ結果で、開発マシンのローカル IIS10 にサイトとして設定してある ASP.NET Web Forms アプリの中にある静的ファイル test01.html を POST 要求したものです。

IIS はデフォルトでは静的ファイルの POST 要求を許可していませんので、画像に示される通り HTTP 405 エラーが返ってきます

イメージ説明

質問者さんのケースも同じことでは? であれば、解決策は POST せず GET 要求することです。静的ファイルを POST 要求しなければならない理由はないと思うのですが。

ちなみに、なぜ Fiddler を使うことを推奨したかと言うと、要求・応答のヘッダとコンテンツを見ることができるからです。今回のケースでは、上の画像のように応答のコンテンツを見るとエラーの内容が一目でわかります。ぜひ使ってみてください。

投稿2019/08/31 01:27

編集2019/08/31 02:18
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問