问题描述
请问各位我想在webservice以及MVCcontrol处理的网页里面希望调用wcf的一个方法,请问要如何写代码webservice的函数如下定义publicclassClientAdaptor:System.Web.Services.WebService{[WebMethod]publicstringAttendance(intstudentID,stringstudentName,stringmac){//希望在这里调用wcf的函数!!!!!return“”;}我在ServiceReferences引用了wcf对象,如下:ServiceReferences.ServiceReference1.SilverLightMonitorManagerClient我在上面代码里面尝试过写如下代码:SilverLightMonitorManagerClientpoxy=newSilverLightMonitorManagerClient();//这里需要一个InstanceContext参数intresult=poxy.testForSiverlight(1,10);但是我不知道如何向SilverLightMonitorManagerClient的构造函数里面传参数。还有不知道这样调用的思路有无问题?MVC框架的control里面调用是否可以使用与webservice同样方法?请各位给点指点。
解决方案
解决方案二:
SilverLightMonitorManagerClient应该有不需要参数的构造函数把。一般情况下,使用Addservicereference...添加对WCF的引用,会有一些文件生成,其中一个代理类是重要的,你这里就是SilverLightMonitorManagerClient。还有会改写你的web.config后者某个web.config。如果不是改写的你的根目录下的config,你需要自己copy一下。config中定义了wcf的地址,contract,binding等。SilverLightMonitorManagerClient没有参数的构造函数会从config中读取信息。
解决方案三:
WCF引用简单的就通过添加服务或者svcutil来生成代理高端点的就自己写Channel
解决方案四:
直接newClientAdaptor()然后调用其方法就行了。如果你觉得这样比较怪异,那么你可以把Attendance方法中的实际的内容取出成为一个单独的“函数库”中的独立方法,然后在你的ClientAdaptor和其它地方都调用这个独立方法。这样“内外分开”比较明显。
解决方案五:
请问各位为何出这个问题。下面是我的webcongfig的内容,是有链接地址的:<system.serviceModel><bindings><customBinding><bindingname="PollingDuplexHttpBinding_ISilverLightMonitorManager"><binaryMessageEncoding/><httpTransport/></binding></customBinding></bindings><client><endpointaddress="http://localhost:19004/Model/core/SilverLightMonitorManager.svc"binding="customBinding"bindingConfiguration="PollingDuplexHttpBinding_ISilverLightMonitorManager"contract="ServiceReference1.ISilverLightMonitorManager"name="PollingDuplexHttpBinding_ISilverLightMonitorManager"/></client></system.serviceModel>
解决方案六:
请问,会不会与我建立的wcf是双工通信的对象有关系?这个是wcf的if的定义,红色部分有个特性:namespaceAssistantofAttendance.Web.Model.core{[ServiceContract(CallbackContract=typeof(IClientCallback))]publicinterfaceISilverLightMonitorManager{[OperationContract]stringload(intteacherID);[OperationContract]stringcheckPhoneStatue(stringclassID);[OperationContract]intsetStudentAttendanceStatue(stringclassID,intstudentID,intstatue);[OperationContract]intsetStudentPhoneSuperviseResult(stringclassID,intstudentID,intstatue);[OperationContract]intstartCompetitionAnswer(stringclassID);[OperationContract]intstopCompetitionAnswer(stringclassID);[OperationContract]intpublishAnswer(stringclassID,stringanswer);[OperationContract]inttestForSiverlight(intcount,intindex);//对于webservice[OperationContract]stringallotAttendanceRequest(intstudentID,stringstudentName,stringmac);[OperationContract]intallotCompetitionAnswerRequest(stringclassID,intstudentID,stringstudentName,stringanswer);[OperationContract]intallotHeartBeatrRequest(stringclassID,intstudentID,stringstudentName,intMonitedResults);[OperationContract]intallotQuestionRequest(stringclassID,intstudentID,stringstudentName,stringanswer);}publicinterfaceIClientCallback{[OperationContract(IsOneWay=true)]voidPushMessage(stringmessage);}}