ASP.NET - フォーム認証の loginUrl での HTTP POST データの受信 (外部アプリから)

StackOverflow https://stackoverflow.com/questions/1895672

質問

フォームで POST メソッド (申し訳ありませんが GET は使用できません) を使用して、従来の ASP アプリケーションから ASP.NET アプリにデータを渡す必要があります。

私のアクションがターゲットの aspx ページであるが、私の ASP.NET アプリがフォーム認証を使用している場合、これは機能しないようです。これは、Request.Form コレクションが null であることを考えると、パイプラインのどこかでデータが失われているように見えるためです。ログインページの Page_Load メソッド。

フォーム認証を無効にすると、対象ページは投稿されたデータを問題なく受信します。

この問題を回避する方法を知っていますか?このデータはいつ、どこで入手できますか?

前もって感謝します!

役に立ちましたか?

解決

可能性は、その目的が完了したら、次に殺されるでしょう、あなたのASPX側で維持するセッションオブジェクトに掲載ヘッダを転送するかもしれません。

void Session_Start(object sender, EventArgs e) 
{
    // Code that runs when a new session is started
    SortedList sList = new SortedList();
    foreach (string key in HttpContext.Current.Request.Form.Keys)
    {
        sList.Add(key, HttpContext.Current.Request.Form[key]);
    }
    Session.Add("myList", sList);

}

他のヒント

あなただけのPOSTの対象です単一ページの保護を解除することはできますか?

あなたのweb.configファイルでます:

<configuration>
  <location path="MyPostHandlingPage.aspx">
    <system.web>
      <authorization>
        <allow users="*" />
      </authorization>
    </system.web>
  </location>
</configuration>

asp から aspx 間でデータを転送するには、次の 2 つの方法が考えられます。

  1. セッションを使用、SQL DB 経由 (参照) http://msdn.microsoft.com/en-us/library/aa479313.aspx

  2. 以下のように中間 ASP ページで QueryString を使用します。

最初の ASP ページ:サンプル.asp

<% language="VBScript"%>
<html>
<head>
    <title>Untitled Page</title>
</head>
<body>
    <form id="form1" action="process.asp" method="post">
    <div>
        &nbsp;<input name="Text1" id="Text1" type="text" />
        <input id="Submit2" type="submit" value="submit" /></div>
    </form>
</body>
</html>

中間ページ:プロセス.asp

<%@ language="vbscript"%>
<html>
<head>
    <title>Untitled Page</title>
</head>
<body>
    <form id="form2">
    <%response.Write(Request.Form("Text1"))
     %>
    <%response.Redirect("default3.aspx?icontent=" & Request.Form("Text1"))  %>
    </form>
</body>
</html>

ASPX コード ページ:デフォルト.aspx

public partial class Default3 : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        Response.Write(Request.QueryString["icontent"].ToString());
    }

}
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top