3

II7では、WCF/asp.netベースのAPIをホストします。従来のaspアプリケーションのユーザーがAPIに接続できるようにするには、「トランスポート」と呼ばれるバージョンを公開する必要がありました。このトランスポートバージョンもasp.netで記述されており、同じアセンブリを指しています。従来のaspが認証できるように、セキュリティレイヤーだけが異なります。メッセージベースのセキュリティとは対照的に、トランスポートレベルのセキュリティが使用されます。

ブラウザを使用してサービス参照をロードする場合、svcutil.exe...WDSLページをロードできます。

テストaspページを使用してこの参照からWebメソッドを呼び出すと、次のように返されます。

Webサービスの呼び出しを終了しました。ステータス=内部サーバーエラーResponseText=a:InvalidSecurityメッセージのセキュリティを確認するときにエラーが発生しました。

これは、認証が失敗していることを示しています。asp.netまたはアプリケーションのWCFストームを使用してテストし、通常のAPIに接続すると、すべてが正常に機能します。

APIは最近移行されました。何かが正しく設定されていないように見えますが、何を説明するのか途方に暮れています。

svcutil.exe ... WDSLサービスリファレンスを参照できます。ブラウザで選択すると、期待されるXML応答が得られます。

使用されるユーザー名とパスワードは、メッセージベースのセキュリティを使用してAPIの非クラシックasppublicaitonを使用する場合に機能します。

トランスポートレベルのセキュリティ障害の検出と設定に関して、問題の診断に役立つトラブルシューティングのヒントを投稿することは可能でしょうか?

ありがとうスコット

次の更新を追加するために編集:

デフォルトのアプリプールと新しいアプリプールを使用しようとしましたが、同じ問題が解決しません。

テストページのエラー:ResponseText = a:InvalidSecurityメッセージのセキュリティを確認するときにエラーが発生しました。

IISログには次の情報が表示されます。v3/transport/ testclassicasptransportwcfservice.asp(200 0 0)(つまり、iis 200)/V3/Transport/DeviceService.svc/DeviceService(500 0 0)(つまり、iisエラー500)

注:TRANSPORTおよびV3で定義された仮想ディレクトリ。V3は、認証に従来のaspとは対照的に、.netを使用して問題なく動作します。

イベントログ:次のエラーのため、アプリケーションプール'トランスポート'のテンプレート永続キャッシュの初期化に失敗しました:アプリケーションプールのディスクキャッシュサブディレクトリを作成できませんでした。データには追加のエラーコードが含まれている場合があります。

この参照は修正を示唆しているように見えますが、「appcmd」のDIRパスと参照の多くは存在しません。

_http://theether.net/kb/100127

4

1 に答える 1

2

REF http://theether.net/kb/100127

  1. cmdプロンプトをロード
  2. CDからC:\ Windows \ System32 \ inetsrv
  3. 次のように入力します:appcmd list config -section:system.webServer / asp
  4. 次のパスが表示されます:c:\ inetpub \ conf \ temp\ASPコンパイル済みテンプレート
  5. チェックパスが存在します(存在します)
  6. ネットワークサービスに「ASPコンパイル済みテンプレート」にアクセスする権限があるかどうかを確認します。そうでない場合は、appcmdから実行します。

    icacls "c:\inetpub\conf\temp\ASP Compiled Templates" /grant "NETWORK SERVICE:(OI)(CI)(M)"
    

    「正常に処理された1つのファイル」と読む必要があります

    アプリプールを再起動しました。

「メッセージのセキュリティを検証するときにInvalidSecurityAnエラーが発生しました」という問題は引き続き発生しますが、イベントログからの「ディスクキャッシュサブディレクトリを作成できませんでした....」エラーは発生しなくなりました。

別の更新を申し訳ありません。ネットワークサービスのアクセス許可を変更しても問題は解決しませんでした。DEFAULTAPPPOOLに変更すると問題が解決しました。

ついにリードを獲得しました。調べた:

  1. ServiceSecurityAuditがサービス動作に設定されました。参照http://intrepiddeveloper.wordpress.com/2008/08/07/security-event-logging-auditing/#
  2. IISログ(非特定のエラー500を表示するだけです。)
  3. 障害トレースが有効になっています(エラー500も表示されます)。
  4. カスタムエラーはオフでした
  5. フレンドリーなIEメッセージはオフでした
  6. Aspクライアント側とサーバー側のデバッグ
  7. ProcessMonが実行されており、エラーはありません。
  8. Web.config httpErrors errorMode = "Detailed" /> +

ServiceSecurityAuditが「オブジェクト参照がオブジェクトのインスタンスに設定されていない」ことを検出したため、アプリにバグがあるようです。


フォローアップ(17/08/11):

ここに記載されているサービスセキュリティ監査:

http://intrepiddeveloper.wordpress.com/2008/08/07/security-event-logging-auditing/

この問題を解決するための鍵でした。ビジネスオブジェクトとデータアクセスdllが整列していないことを示すオブジェクト参照エラーを発見しました。CLASSICASPを使用してTRANSPORTAUTHENTICATIONを使用してWCF.NETAPIに接続する場合、WCF展開のbehaviour.configファイルでService Security Auditが有効になるまで、このエラーの兆候はまったくありませんでした。

于 2011-08-10T08:53:20.383 に答える