5

多くの[RequireHttps].

しかし、デバッグするときは、それらの多くをさまざまな場所 (コントローラー) でコメントする必要があります。コードの準備ができたら、すべてのコメントを削除する必要があります。

そのため、時間がかかり、コメントを外すのを忘れることもあります[RequireHttps]:)

私の質問は、この問題を解決するためのベスト プラクティスはどれですか?

ありがとうございました!

4

6 に答える 6

10

すべての使用法についてステートメントを入力したくない場合#ifは、デバッグ ビルドではノーオペレーションでありRequireHttps、リリース ビルドでは単純なサブクラスである新しい属性を作成できます。

#if DEBUG
public class ReleaseRequireHttpsAttribute : Attribute
{
    // no-op
}
#elif
public class ReleaseRequireHttpsAttribute : RequireHttpsAttribute
{
    // does the same thing as RequireHttpsAttribute
}
#endif

[RequireHttps]次に、すべてを検索して置換し[ReleaseRequireHttps]、それを新しいメソッドに使用します。

于 2012-07-07T18:26:53.787 に答える
4

この問題を解決するための「ベスト プラクティス」について尋ねられたので、この場合のベスト プラクティスは、属性をそのままにして、デプロイしたコードとまったく同じコードをデバッグすることです。他の回答 (すべてうまくいきます) は、コードをデバッグし、展開する前にコードを変更することを意味します。これは決して良い考えではありません。

この場合、IIS Express を使用すれば、SSL 経由で Web プロジェクトを簡単にデバッグできます。これは、Visual Studio 2010 Web サーバーのドロップイン代替品ですが、安全な HTTP サポートなど、IIS のほとんどの機能を備えています。詳細については、次を参照してください。

http://learn.iis.net/page.aspx/901/iis-express-faq/

インストールが完了すると、IIS Express を使用するようにプロジェクトを切り替え、IIS Express 構成で https バインディングをセットアップし、通常どおりステップスルーできます。

于 2012-07-07T20:20:21.657 に答える
3

#if (C# リファレンス)を使用し、デバッグとリリースの構成がありました。

次にあなた:

#if RELEASE
    [RequireHttps]
#endif
void methodHere()
{
...
}
于 2012-07-07T18:22:09.087 に答える
2

以下により、機能をドライアップし、プリプロセッサ ディレクティブでコントローラーを汚染する必要を防ぐことができます

public class CustomRequireHttpsAttribute : RequireHttpsAttribute
{
    /* override appropriate method with preprocessor directives */
}

[CustomRequireHttps]
public ActionResult Foo(string foo) { /* ... */ }

[CustomRequireHttps]
public ActionResult Bar(string bar) { /* ... */ }
于 2012-07-07T18:28:41.877 に答える
1

#if RELEASE ... #endif構造を使用します。

#if RELEASE
    [RequireHttps]
#endif
void YourMethod()
{
    ...
}
于 2012-07-07T18:20:49.160 に答える