ドリリウム

趣味をとことん突き詰めるブログ。ペット / フィンチ / カメラ / 高知 / 釣り / DIY / バイク / 車 / 家具制作 / アクアリウム / コーヒー / 地方移住 / ルノー・ルーテシア / SUZUKI ST250 E type / EOS Kiss M

こんにちは。カタミチ(@katamichi2h)です。

お問い合わせsyufukc@gmail.com / Twitter

ASP.NET URLに”_” (アンダーバー)があるとフォーム認証に失敗する

ASP.NETのフォーム認証機能を使って認証を行っているWebアプリケーションで、開発用に立てたサーバーにアプリケーションを配置してみたところ、フォーム認証に失敗するようになってしまいました。

 

IISの設定やプログラムをよくよく確認しても原因らしきものは見つからず、HTTP通信を監視してみても、ただただ単純にフォーム認証に失敗してはじかれています。始めは何らかの理由で、フォーム認証は成功しているのに、認証後にログイン画面にリダイレクトされているのかと考えていたのですが、その線はなさそうです。

 

 

 

で、原因。

これまでも同様にサーバーに配置して動かしていましたが、問題はなかったのです。

何かサーバー側で変えたことがあるかと言われれば、バーチャルホストです。

 

これまでは、IPアドレスを使ってアプリケーションを動かしていました。

ブラウザで、http://IPアドレス/と打っていたわけです。しかし、流石に面倒になってきて、IISの設定から適当なホスト名をつけました、開発用だったため、「dev_name」という感じの名前です。nameはお客さんの名前。

僕はWeb系の経験がほとんどなく、あるにはあるのですが、こんな引っかかり方をしたのは初めてでした。

 

なぜアンダーバーがだめなのかはわかりませんが、「devname」や「dev-name」にすると全く問題なくフォーム認証が機能しました。HTTPリクエストかレスポンスで、アンダーバーが特殊な意味を持つんでしょうか・・・?

とにかく解決したし、アンダーバーを使う必要性もないのでこれでよしとします。

▼IT系の転職なら

▼誰かにプログラミングを教えてみませんか?

▼釣り具の宅配買取なら