私はアプリケーションを.Net 3.5のWebFormsから.Net 4に移動しました。唯一の変更は3.5拡張を削除するweb.configの変更でした。 .Net 4の一部です。Asp.Net Webforms security - アプリケーションが.Net 4に移動するのを壊す
私はサイトで、次のアプレットタグ(ソフトウェアJUploadコントロールを永続化)を持っているがをFormsAuthenticationとカスタムプリンシパルを使用してsecuried:
<APPLET
id="UploadCtl"
CODE="persits.transfer.gui.UploadUI.class"
ARCHIVE="JUpload.jar"
WIDTH="99%" HEIGHT="200"
NAME="JUpload" MAYSCRIPT="yes"
>
<PARAM NAME="cabbase" VALUE="JUpload.cab" />
<PARAM NAME="UseSockets" VALUE="false" />
<param name="DNDOverrideEnabled" value="true" />
<PARAM NAME="ShowTransferButton" VALUE="false" />
<PARAM NAME="AllowAddFiles" VALUE="true" />
<param name="AllowRemoveFiles" value="true" />
<param name="UploadURL" value="/site/manageDocumentsPost.aspx" />
<param name="FinalURL" value="/site/manageDocuments.aspx" />
<PARAM NAME="DebugInformation" VALUE="true">
<param name="MaxFileSize" value="2500" />
<PARAM NAME="Cookie1" VALUE="ASP.NET_SessionId=<% =SessionId %>">
<PARAM NAME="Cookie2" VALUE="<%=FormsCookieName %>=<%=FormsCookieValue %>">
</APPLET>
基本的にコントロールがUploadURLで指定されたURLに掲載します。 2つのクッキーパラメータは、投稿を行うときにアップロードアプレットによってユーザーのSessionIdとFormsAuthTicketが確実に送信されるようにします。
私が述べたように、これは完全に.Net 3.5(CLR 2.0)で動作します。 .Net 4、CLR4に移動すると、/site/ManageDocumentsPost.aspxへのリクエストがログオンページにリダイレクトされ、コントロールはアップロードがうまくいったと仮定してこれを表示します。ポストページは決して実際にはコードを実行しません(ポストは何も返さないので、コントロールはFinalUrlを要求します)。
Fiddlerを使用すると、manageDocumentsPostがリダイレクトを引き起こし、このリダイレクトが異なるAsp.Net SessionIdを持つことがわかります。
何が原因で変更されている可能性がありますか?もっと重要なのは、それを再び機能させるためのアイデアですか? アンディ