2

さて、ここでついにアカウントを作成する必要がありました。これを何年も使用しており、ここで私の答えを見つけることがよくありましたが、今回はそうではありません. 実際、私は似たような問題を抱えている人をたくさん見つけましたが、彼らの解決策はどれも私を助けてくれませんでした.

私は新しい MVC3 プロジェクトを開始したので、これまでのところ非常に単純です。私は以前に一握りを作ったので、自分が何をしているのかをちょっと知っています (しかし、明らかに、他の理由がここにあるわけではありません ;-)

私の問題は明らかにかなり一般的なものです。ユーザーが既にセッションを持っているにもかかわらず、リクエストが新しいセッションを開始します。

これの最もイライラする部分は、ホストされているサービスでは完全に機能しますが、ローカルホストでは機能しないことです。

私はこれを解決するために多くのことをしました:

  • 私のコンピュータの名前にはアンダースコアがありません。
  • セッションにカスタム データが含まれています (ユーザーがログインした後にのみエラーが発生します)。
  • 以下を web.config に追加しました (hmpf、gt / lt 文字を想定する必要があると思います):
    httpプロトコル
      カスタムヘッダー
        クリア /
        add name="Access-Control-Allow-Origin" value="*" /
      /customHeaders
    /httpプロトコル
  • そしてこれも:

    モジュール runAllManagedModulesForAllRequests="false"/
  • InProc sessionstate では、true と false の両方で「cookieless」を試しました。

  • 私のホスト ファイルには、localhost に関する情報は含まれていません。

うーん。このリストを見ると、私はいくつかを忘れていると確信しています。彼らは絶望的で(そうです、上記よりもさらに)、絶望から生まれたので、意図的にもありました。

前述のように、これは私のホストで機能するため、特に不安です-開発サーバー(VS2010)で微調整する必要がある構成設定がいくつかありますか?

私は、問題がクロスドメイン セキュリティによるものであるという前提で作業してきました (別のドメインから来ていると思われます)。

このリクエストで失敗が発生します。

URL: 'http://localhost:50396/moody/changeBuilding/' + elem.selectedIndex,  

これは、jQuery.ajax 関数で使用する options 配列の一部です。

ホストにアップロードするときにドメインを変更しましたが、localhost:port の部分だけで、アプリケーション内の他のすべては同じです。

私はこれに2日間頭をぶつけていて、試験に出られないでしょう:-(しかし、私はこれを6フィート下に埋めることを決意しています.

私はあらゆる提案に非常に感謝しています!

4

2 に答える 2

0

セッション Cookie が AJAX リクエストで送信されていることを確認するために、フィドラーなどを使用してみましたか。ドメインが同じ場合に送信する必要がありますが、動作チェックです。

編集: ポートの変更に関するこのSO 投稿も読む価値があります。

編集: Charlino のコメント (およびそこで実行されたスターリング探偵作業) の新しい情報を考えると、問題がローカル開発マシンのみにある場合、localhost/127.0.0.1 の問題を回避する最も簡単な方法は、ブラウザーの URL を手動で変更することです。 127.0.0.1:50396 から localhost:50396 へ、再度ログインして新しい Cookie を取得すれば、準備完了です。

于 2012-12-12T21:41:01.173 に答える
0

ホストにアップロードするときにドメインを変更しましたが、localhost:port の部分だけで、アプリケーション内の他のすべては同じです。

上記を読むと、ドメインを変更しているため、セッション Cookie が送信されていないことがわかります。

座って、セッションがどのように機能するかを考えてみましょう。基本的に、ASP.NET にはセッションとそのデータのコレクションが含まれています。各要求が受信されると、ASP.NET はその要求を既存のセッションにマップするか、新しいセッションを作成する必要があります。

では、ASP.NET はどのセッションが各着信要求に属しているかをどのように認識するのでしょうか? または、新しいリクエストを作成する必要があることを知っていますか? これを知る唯一の方法は、リクエストに何らかの情報 (「キー」) が含まれているかどうかです。これは、ASP.NET にリクエストを与えるセッションを指示します... または、この「キー」がない場合は、新しいセッションを作成します。

リクエストはこの「キー」をどのように送信しますか? クッキーを通じて。

したがって、ドメインを変更すると、Cookie は送信されません... したがって、ASP.NET は要求に対して新しいセッションを作成します。

于 2012-12-12T21:43:18.313 に答える