标签: asynchronous-wcf-call

[OperationContract(IsOneWay = true)]与检查生成的异步操作复选框之间有什么区别?

标记WCF方法有什么区别

[OperationContract(IsOneWay = true)]

添加服务引用时属性和检查生成异步操作复选框?

根据我的阅读,似乎只能在客户端定义调用的异步性质.如果是这样的话,有什么意义[OperationContract(IsOneWay = true)]呢?

现在,我只是在WCF方法中运行以下方法.

 public void UpdateIndex(IndexElement[] indexElements)
    {
        // start the update on a new thread.
        Thread thread = new Thread(() => UpdateIndexThread(indexElements));
        thread.Start();
    }
Run Code Online (Sandbox Code Playgroud)

我在客户端的代码中创建了一个服务引用,我只需调用:

indexerClient.UpdateIndex(indexElements);
Run Code Online (Sandbox Code Playgroud)

indexerClient我的WCF服务的实例在哪里.

这还行吗?它似乎没有,它几乎就像在返回之前等待线程完成一样.

.net wcf asynchronous-wcf-call

7
推荐指数
1
解决办法
5086
查看次数

自动填写Web服务呼叫响应上的文本

我是ios编程的新手,需要实现类似谷歌搜索框的东西,即自动填充文本字段.我的场景如下1.当用户在文本字段中键入时2.background调用webservice获取数据(请求数据=文本字段数据).

例如: - 如果用户在Web服务调用的文本字段请求数据中键入"abc"应为"abc",并且Web服务对此进行响应.现在下次用户输入"d"即textfield包含"abcd"服务响应时必须考虑附加文本.(类似谷歌搜索字段)3.web服务调用应该是异步的.4.response应显示在下拉列表中.

有可能在ios ??? 任何教程或示例将不胜感激.提前致谢.

web-services asynchronous-wcf-call ios sendasynchronousrequest

7
推荐指数
1
解决办法
1578
查看次数

WCF调用函数而不等待它完成它的工作?

在每次从WCF服务调用函数时,在客户端,它等待直到WCF服务上的函数完成,就像调用本地函数一样.所以我为每个在新线程中启动预期函数的函数添加了一个额外的函数,所以我的几乎所有函数都是这样的:

EX:
我从CLIENT方面调用一个函数client.ReceiveFile():

private void SendFile(Socket socket, Job job, DoWorkEventArgs e)
    {
        UpdateInfo(job.Name, job.Icon, job.Size);
        client.ReceiveFile((_File)job.Argument, bufferSize);
        SizeAll = job.Size;
        UpdateCurrFile(((_File)job.Argument).Path, "1");
        SendX(socket, ((_File)job.Argument).Path, e);
    }
Run Code Online (Sandbox Code Playgroud)

在服务器中我必须这样做:

 public void ReceiveFile(_File file, int bufferSize)
    {
        System.Threading.Thread th = new System.Threading.Thread(unused => ReceiveFileTh(client, file.Name, file.Size, bufferSize));
        th.Start();
    }
    private void ReceiveFileTh(Socket client, string destPath, long size, int bufferSize)
    {
        try
        {
            ReceiveX(client, destPath, size, bufferSize);
        }
        finally
        {
            CloseClient();
        }
    }
Run Code Online (Sandbox Code Playgroud)

关键是,当我从客户端sendFile时,它告诉服务开始接收,但如果我没有启动新线程,客户端将等待服务接收文件,并且不会发送文件数据.

因此,WCF支持一种不会使客户端等待服务功能完成的方式!或者我将不得不使用上述方法?

c# wcf multithreading asynchronous asynchronous-wcf-call

6
推荐指数
1
解决办法
5901
查看次数

如何解决WCF中的System.ServiceModel.ServerTooBusyException?

我正在开发一个每天平均有 50,000 次访问(大约 140,000 页面浏览量)的网站。我正在使用WCF作为我的服务InstanceContextMode = InstanceContextMode.PerCall
此外,我正在使用异步方法来调用 WCF 服务,
最近我在某些页面和某些请求上收到以下异常消息:

Exception Type: System.ServiceModel.ServerTooBusyException
Exception Message: The HTTP service located at http://localhost:8090/SmartService.svc is unavailable.  This could be because the service is too busy or because no endpoint was found listening at the specified address. Please ensure that the address is correct and try accessing the service again later.
Stack Trace:    at System.Runtime.AsyncResult.End[TAsyncResult](IAsyncResult result)
   at System.ServiceModel.Channels.ServiceChannel.SendAsyncResult.End(SendAsyncResult result)
   at System.ServiceModel.Channels.ServiceChannel.EndCall(String action, Object[] outs, IAsyncResult result)
   at System.ServiceModel.Channels.ServiceChannelProxy.TaskCreator.<>c__DisplayClass5`1.<CreateGenericTask>b__4(IAsyncResult asyncResult)
   at …
Run Code Online (Sandbox Code Playgroud)

c# wcf exception wcf-configuration asynchronous-wcf-call

5
推荐指数
1
解决办法
1万
查看次数

TransactionScopeAsyncFlowOption和Isolation Level?

我在WCF服务中使用Entity Framework 6.1并希望用READ UNCOMMITTED隔离级别包围我的SELECT查询,因为其他批量更新将插入到我正在阅读的表中,并且不希望锁定那些批量更新当在表上执行READ时.这基本上模拟了SELECT WITH NOLOCK.

此代码也以异步方式使用.因此,我不能简单地使用TransacactionScope.请注意,我也在使用.Net 4.5.1框架.

我可以将TransactionScope上的隔离级别设置为ReadUncommitted,但TransactionScopeOption的默认值为ReadCommitted.我没有看到任何改变隔离级别的方法.

有没有办法改变隔离级别?如果我无法设置隔离级别,我的查询是否可以在上述情况下运行.

实际上,如果我不能将隔离级别设置为"NOLOCK",则我甚至不需要包含TransactionScopeAsyncFlowOption.

wcf entity-framework asynchronous-wcf-call isolation-level c#-5.0

4
推荐指数
1
解决办法
1380
查看次数

在执行合同操作期间调用回调

我正在Azure上编写WCF服务.

在我的服务中,我需要在执行合同操作期间调用回调.当我尝试这样做时,将抛出异常并且客户端将被锁定.我认为这是因为通道打开合同操作,调用当前通道中的回调会锁定线程,对不对?我想为这种情况获得解决方案.

这是超时异常消息:

发送到net.tcp://127.255.0.0:8000/MytestWCFService的请求操作未在配置的超时(00:00:59.9889989)内收到回复.分配给此操作的时间可能是较长超时的一部分.这可能是因为服务仍在处理操作,或者因为服务无法发送回复消息.请考虑增加操作超时(通过将通道/代理强制转换为IContextChannel并设置OperationTimeout属性)并确保该服务能够连接到客户端.

编辑:代码示例

[ServiceContract(Namespace="testnamespace")]   
public interface ICallback   
{   
    [OperationContract(IsOneWay=true)]   
    void Callbackmethod();   
}  
Run Code Online (Sandbox Code Playgroud)

然后我在服务端实现IContract:

[ServiceBehavior(InstanceContextMode=InstanceContextMode.Single,   
    ConcurrencyMode=ConcurrencyMode.Reentrant,   
    AddressFilterMode=AddressFilterMode.Any)]   
public class WCFService : IContract   
{      
   public int Add(int a, int b)   
   {   
       int result = a + b;  
       ICallback callback = OperationContext.Current.GetCallbackChannel<ICallback>();   
       callback.Callbackmethod();   
       return result;   
   }   
}   
Run Code Online (Sandbox Code Playgroud)

我正在回拨当前频道,它是一个双工频道.

wcf asynchronous-wcf-call wcf-callbacks

3
推荐指数
1
解决办法
1098
查看次数