首先,我会说我不是这样做的。我有一个在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中可能导致此问题的错误?
查尔斯
答案 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的安全性是否有可能略有不同?