2009-04-30 21 views
0

まず、私はこれを作っていないと言います。私はこのようなASMXファイルに実装されたWebメソッドがあります。WebサービスSoapDocumentMethod OneWayの問題

SQL Serverプロファイラを使用して
[WebMethod] 
[SoapDocumentMethod(OneWay=true)] 
public void Method1(INPUT oInput) 
{ 
    // Call SQL stored procedure SP1 
    // Call SQL stored procedure SP2 
} 

私はSP1が呼び出される保存されますが、SP2にはない参照してください。 OneWay = falseに設定すると、SP1とSP2の両方が呼び出されます。

ここは奇妙な部分です。私はOneWay = trueを残しますが、Web設定ファイルで<trace enabled="true">を設定します。SP1とSP2の両方が呼び出されます。いいえ、本当に!

私はそれを最小値に下げてから、サンプルコードを投稿してみます。その間、誰かがこれを引き起こしているかもしれないASP.NET 3.5 SP1のバグについて知っていますか?

チャールズ

答えて

1

私自身の答えが見つかりました。 Context.Current.RequestオブジェクトにアクセスするSP1とSP2の間にいくつかのコードがありました。それをコメントアウトすると、私の問題が解決されます。

結論? OneWay = trueの場合、Requestオブジェクトは使用できないようです。奇妙なことに、<trace enabled="true">を設定するとオブジェクトが利用可能になります。 OneWay propertyのドキュメントから

は、静的Currentプロパティを使用しているHttpContextにアクセスすることはできません。 HttpContextにアクセスするには、WebServiceからXML Webサービスメソッドを実装するクラスを派生させ、Contextプロパティにアクセスします。

+0

意味があります - OneWay = trueの場合、WebMethodが起動される前に応答が返されます。あなたがそれを理解してうれしいです。 – Moose

0

this articleによれば、一方向= trueの場合、web.configファイルから偽装コンテキストが消え。 2つのSPでセキュリティが少し異なる可能性はありますか?

+0

私は調査しますが、これは原因ではないと考えています。 "server = Server; database = Database; uid = User; pwd = Password"のような接続文字列でSQL Server認証を使用しています。実行中のASP.NETスレッドコンテキストは、このようにSQLにアクセスすると効果がないようです。 – Charles

関連する問題