2012-03-21 7 views
3

私は外部アプリケーションに投稿するページにフォームを持っており、その投稿にURLを送信する必要があります。ただし、一部のユーザーの場合、URLはhttps://mysubdomain.domain.com/Home/Actionではなくhttps://localhost/Home/MyActionです。私はこれを再現できませんでしたが、2人の同僚がこれと同じネットワーク上でこれを一貫して取得しています。なぜUrl.ActionとRequest.Url.Hostは "localhost"を返しますか?

<form action="https://externalapp.com/action.cgi" method="POST"> 
    ... 
    <input type="hidden" name="URL" value="@Url.Action("MyAction", "Home", null, "https")"/> 
    <input type="submit" value="Submit" /> 
</form> 

私が試してみた:

  • Url.Action( "MyAction"、 "ホーム"、ヌル、 "HTTPS")
  • Url.Action( "MyAction"、 "ホーム" 、null、 "https"、Request.Url.Host)//ホストを指定しないと、MVCは私が信じるものです
  • Url.Action( "MyAction"、 "Home"、null、 "https" 、Request.Url.Authority)
  • Url.Action( "MyAction"、 "Home"、null、 "https"、Request.Headers ["host"])//いいえそのポートはURLに2回表示されます(例: https://mysubdomain.domain.com:4430/Home/Action

なぜ、一部のユーザーはこれですべてlocalhostを参照しますか?どのユーザーも、ホストされているサーバーからこのアプリケーションにアクセスしていません。

更新:内部では、アプリケーションは、https://mysubdomain.domain.com:445/のようなポート番号でアクセスされます。外部的には、通常の443:https://mysubdomain.domain.com/です。内部ユーザーの場合、Url.Actionは完全に正常に動作しています。外部ユーザーの場合、Url.Actionにmysubdomain.domain.comを指定しても、ポート443を使用してアクセスするユーザーはlocalhostを返しています。私はMVCコードを見て、ホスト名を上書きする理由を理解できませんでした仕様。

IISでHTTPSバインディングがチェックされており、正しいSSL証明書を使用しています。どういうわけか外部443から内部445へのポート転送がそれを壊しているのだろうか?

+0

私にはIIS設定のような音がします。私はMVCが何か特別なことをしているとは思わない。 – Dismissile

+1

わかりやすくするためには、次のようにする必要があります: ' Tr1stan

+0

このアプリケーションのユーザーは、同じURL(例: 'https:// mysubdomain.domain.com')でアクセスしていますか? - コンピュータに固有のいくつかのユニークなDNSエントリがある可能性はありませんか、ドメインアカウントがありますか? – Tr1stan

答えて

1

あなたのポストにポート転送が記載されています。このポート転送はどこで行われますか?それはIISボックス上で行うのならば、それは可能、誰かが転送そうのように構成され:ローカルホストを使用するURLの解像度を引き起こすだろうが、内部的に、ポートフォワーディングが発生していない、正しいドメインので

https://mysubdomain.domain.com:445 -> http://localhost:443 

解決されました。

関連する問題