私は、何かのように、クラスライブラリにSESSIONSTATEを使用したいです> "NullReferenceException:オブジェクト参照がオブジェクトのインスタンスに設定されていません。" クラスライブラリにsystem.Webへの参照があります。 .NET 4では、私はこれを安全に行うことができます。しかし、それは.NET 4.6.1の問題です。 どうすればこの問題を解決できますか? おかげASP.NET 5/MVC 6、クラスライブラリのセッションの使い方私はそれが例外をスローし、このメソッドを呼び出すとき</p> <pre><code>public static void SetUserId() { HttpContext.Current.Session["userId"] = 1; } </code></pre> <p>が、「要求の処理中に未処理の例外が発生しました。」:.NET 4.6.1で
答えて
これはデフォルトでnull
で、コンセプトは駆動ASP.NETコア1.0は、プラグイン可能なミドルウェアです。明示的にセッションをオプトインする必要があります。
Microsoft.Extensions.Caching.Memory
とMicrosoft.AspNet.Session
の両方の依存関係がproject.json
に存在することを確認する必要があります。次に、あなたの Startup.cs
に次の行を追加します。
public void ConfigureServices(IServiceCollection services)
{
// Add framework services.
services.AddMvc();
services.AddCaching();
services.AddSession(options => {
options.IdleTimeout = TimeSpan.FromMinutes(30);
options.CookieName = ".MyApplication";
});
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
app.UseSession();
// Removed for brevity...
}
詳細な記事here。それはあなたがする必要があるすべてのものでなければなりません。
更新
は、WebアプリケーションのHttpContext.Current
外を使用しようとしないでください。これは、HTTP要求/応答パイプラインのコンテキスト内でのみ意図されています。あなたが探している希望のインタラクションを達成するために抽象化を利用することが好ましい。
明示的な例を提供するために、より多くのソースコードを共有する必要があります。
セッションStaeは私のASP.NETアプリケーションで利用できますが、私の問題はクラスライブラリの中にあります。 ASP.NETアプリケーションではセッションにアクセスしますが、クラスライブラリにはアクセスしません。ネット4.0では、私はそのような問題はありませんでした。例外は.NET 4.6.1に移行したときに発生します。ところで、クラスライブラリの中にstartup.csはありません。 –
for Update:クラスライブラリのアプリケーション状態にアクセスするにはどうすればよいですか?セッションの代わりにwep:wep service?共有メモリ ?データベース?私はそれが流暢なコードではないので、私はクラスのライブラリにWebアプリケーションからパラメータを渡すしたくないことに注意してください。 –
Ali - あなたはそれから地獄を抽象化します。あなたのクラスライブラリで現在のセッションが必要な場合は、それをコンストラクタの引数として渡します。 –
- 1. w3wp.exeで未処理の例外( '<System.StackOverflowException>')が発生しました
- 2. 例外と例外のスロー。<T>?
- 3. メソッドのチェーンでランタイム例外を処理する方法は?三つの方法がある</p> <p>が言うことができます::
- 4. スプリングMVC形態<form:form > org.apache.jasper.JasperExceptionが:例外処理JSPページを発生
- 5. Python Tkinter未処理例外スレッド開始<function main_thread at ...>
- 6. runMidlet.exeで未処理のWin32例外が発生しました
- 7. ボタンを使用して別のクラスのメソッドを呼び出すと、未処理の例外が発生する
- 8. Javaに関して<E> public static <E> void
- 9. HttpURLConnectionを呼び出すと未処理の例外が発生する
- 10. Zend_Aclがオンの場合の例外処理方法は?私は私のコードで何かを追加しました</p> <blockquote> <p>module_name . "::" . controller_name . "::" . action_name;</p> </blockquote> <p>:それは私がZend_Aclではをimplemeted、そのworking.my資源であるように思わまし
- 11. xUnit .netのAssert.Throwsでタスクによってスローされた例外を処理する方法<T>?
- 12. 私のレールアプリでこのエラーが発生しました:未定義のメソッド `course_users_path 'の#<#<クラス:0x10fd9be48>:0x10fd9d60>
- 13. 非同期デリゲートコールで未処理の例外が発生しました
- 14. セッションのサブドメイン間のクッキー処理をクロスですか?</p> <ul> <li>sub1.domain.com</li> <li>sub2.domain.com</li> </ul> <p>、または各サブドメインは常にそれ自身のクッキーを必要とします:
- 15. 要求は、要求が、私は()のApplication_Errorでのアプリのエラーを処理するのApplication_Error(中asp.netでアヤックス)</p> <p>がある場合
- 16. 期待例外ArgumentErrorが、私は以下のクラスの個々のメソッドを呼び出すと、私は<code>ArgumentError</code>を期待していたNoMethodError
- 17. JMS処理中にapachemq例外が発生しました
- 18. ラップしているものにかかわらず、どの "a"タグがクリックされたときにクリックハンドラを処理する方法は?</p> <pre><code><a href="/foo">bar</a> <a href="/"> <div></div> </a> </code></pre> <p>そして、私はANY「」タグが(jQueryを使って)クリックされたときに処理ハンドラを書きたい:
- 19. は、私は私はそれをどのように行うことができます</p> <pre><code>wadl: http://domain.com/application.wadl method: checkInfo </code></pre> <p>WADLサービスからメソッドを呼び出し、パラメータを渡す必要がPHP
- 20. HttpWebrequest呼び出し順序または未処理例外
- 21. 0x00363A09で未処理の例外が発生しました。スタッククッキーインストルメンテーションコードがスタックベースのバッファオーバーランを検出しました
- 22. 私は<code>readFile()</code>はしてFileNotFoundExceptionをスローしますが、以下のように、<code>main</code>ない、<code>main</code>方法で<code>readFile()</code>という名前のメソッドを呼び出したときにFileNotFoundException
- 23. mscorlib.dllでSystem.StackOverflowException型の未処理例外が発生しました
- 24. 呼び出しMavenのゴール<p>それは私が同等の操作を行うことができ、例えば、JavaからMavenのゴールを呼び出すことは可能ですか?</p> <p>おかげで、 ニック</p>
- 25. FaultExceptionを使用して未処理の例外<T>(WCFおよびWP7アプリケーションあり)
- 26. Eclipseで未処理のループ例外が発生する
- 27. System.Windows.Forms.dllで 'System.ArgumentException'の未処理の例外が発生しました
- 28. Netty例外処理 - ハンドラが例外をスローした後、何を?
- 29. 'System.Data.SqlClient.SqlException'型の未処理の例外がSystem.Data.dllで発生しました。
- 30. EventBus 3.0 registerStickyは、私が試してみました</p> <pre><code>@Override public void onStart() { super.onStart(); EventBus.getDefault().register(this); } </code></pre> <p>レジスタの場所(この)方法registerSticky(これを)解決することはできません
これは、クラスライブラリでセッションIDにアクセスする必要がある場合、間違っていることを示す良い兆候です。 – Tseng
何が問題なのですか?私は.NET 4.0のプロジェクトを持っており、うまくいきます。 .NET 4.6.1に移行したときに問題が発生しました –
実際の例外を調べてみますか? – CodeCaster