Web Service SoapDocumentMethod OneWay问题

时间:2009-04-30 16:49:40

标签: asp.net web-services

首先,我会说我不是这样做的。我有一个在asmx文件中实现的web方法,如下所示:

[WebMethod]
[SoapDocumentMethod(OneWay=true)]
public void Method1(INPUT oInput)
{
   // Call SQL stored procedure SP1
   // Call SQL stored procedure SP2
}

使用SQL Server Profiler我看到存储的SP1被调用,但SP2没有。如果我设置OneWay = false,则会调用SP1和SP2。

这是奇怪的部分。我离开OneWay = true但我在Web配置文件中设置<trace enabled="true">,SP1和SP2都被调用。不,真的!

我会尝试发布更多示例代码,然后将其降低到最小值。与此同时,有没有人知道ASP.NET 3.5 SP1中可能导致此问题的错误?

查尔斯

2 个答案:

答案 0 :(得分:1)

我找到了自己的答案。 SP1和SP2之间有一些代码访问Context.Current.Request对象。评论它可以解决我的问题。

结论?如果OneWay = true,似乎Request对象不可用。虽然设置<trace enabled="true">使对象可用,但很奇怪。

来自OneWay property的文档:

  

无法使用静态Current属性访问HttpContext。要访问HttpContext,从WebService派生实现XML Web服务方法的类,并访问Context属性。

答案 1 :(得分:0)

根据this article,当OneWay = true时,web.config中的模拟上下文消失。两个SP的安全性是否有可能略有不同?