Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ASP.NET-异步Web服务_Asp.net - Fatal编程技术网

ASP.NET-异步Web服务

ASP.NET-异步Web服务,asp.net,Asp.net,我正在尝试从ASP.NET web应用程序异步执行web服务。这个特定的web服务(.asmx)与我的web应用程序属于同一个项目。我注意到,当我从另一个web应用程序引用web服务时,我可以使用以下代码异步调用web服务: TestService service = new TestService(); service.TestMethod(); ServiceProxy.TestService service = new ServiceProxy.TestService();

我正在尝试从ASP.NET web应用程序异步执行web服务。这个特定的web服务(.asmx)与我的web应用程序属于同一个项目。我注意到,当我从另一个web应用程序引用web服务时,我可以使用以下代码异步调用web服务:

TestService service = new TestService();
service.TestMethod();
ServiceProxy.TestService service = new ServiceProxy.TestService();        
service.TestMethodAsync();
但是,如果我通过单独的web应用程序引用web服务,我注意到我可以选择使用以下代码异步执行它:

TestService service = new TestService();
service.TestMethod();
ServiceProxy.TestService service = new ServiceProxy.TestService();        
service.TestMethodAsync();
诀窍是,我希望从与我的web服务位于同一应用程序中的web页面异步执行web服务。这可能吗?如果是,怎么做

不把我的web服务放在一个单独的项目中就可以做到这一点吗


谢谢,

它仍然可以引用与web服务相同的应用程序,不是吗?

首先,我建议您将web服务放在一个单独的项目中

第二,当你打电话时:

TestService service = new TestService();
service.TestMethod();
你陷入了一个陷阱,你使之成为可能,因为他们在同一个项目。您直接调用了TestMethod。这不是web服务调用,而是对TestMethod的直接调用

我建议您将服务放到另一个项目中,然后使用Web引用或服务引用从Web应用程序访问它

编辑:您可以将其保存在同一个应用程序中,但这将继续令人困惑。如果要将其作为web服务调用,则必须始终使用web引用或服务引用


如果它是同一个应用程序的一部分,那么为什么它是一个web服务呢?

为了避免混淆,您可能根本不应该直接调用web服务方法。让ASP.Net调用该方法以响应web方法请求


但是,您可以将web方法的实现移动到另一个类中,该类可以在任何其他时间由web服务类和web应用程序实例化和调用。有了这个类,如果你想异步调用它的一个方法,你应该考虑创建一个委托并使用BeginInvoke()和EndInvoke()。

第一个代码示例是从同一个项目中同步调用方法的一个例子,对吗?不是像问题所说的那样异步。不,更糟。请看我的答案。我发现OP直接使用WebService实现类,而不是将其作为web服务调用,但我的观点是,问题是,作为书面调用,这是一个异步调用,当它明显是同步的时候。当他回答时,我们会很感兴趣。“同一项目中的Web服务”通常意味着混乱,而不是意图。