在同一解决方案中引用(调用)Web服务

时间:2013-10-09 11:32:40

标签: c# asp.net wcf silverlight asmx

enter image description here我创建了两个独立的项目,一个Web窗体,一个Silverlight。 我在Web项目中实现了一个Web服务,我通过Silverlight的ServiceReference调用它来将一些值传递回Web项目。

问题: 在测试中,如果我在一个VS实例中启动我的Web项目,它将100%工作,而Silverlight项目是另一个VS实例 - Silverlight调用该服务,我在Web项目中接收调用等等。

我现在已将Silverlight项目包含在与Web项目相同的解决方案中,现在它无法正常工作 - 没有错误,没有服务回复,没有......

我的ServiceReferences.ClientConfig的内容:

<configuration>
<system.serviceModel>
    <bindings>
        <basicHttpBinding>
            <binding name="EnrollServiceSoap" maxBufferSize="2147483647"
                maxReceivedMessageSize="2147483647">
                <security mode="None" />
            </binding>
        </basicHttpBinding>
    </bindings>
    <client>
        <endpoint address="http://localhost:8080/EnrollService.asmx"
            binding="basicHttpBinding" bindingConfiguration="EnrollServiceSoap"
            contract="EnrollServiceReference.EnrollServiceSoap"
            name="EnrollServiceSoap" />
    </client>
</system.serviceModel>

我在WEB项目中的服务实施:

namespace XXX
{
/// <summary>
/// Summary description for EnrollService
/// </summary>
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]
// To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line. 
// [System.Web.Script.Services.ScriptService]
public class EnrollService : System.Web.Services.WebService
{

    [WebMethod]
    public void UpdateFingerTemplates(string PersonID)
    {
        Person person = SQLData.Persons.getPersonByID(PersonID);
        Person newPerson = SQLData.Persons.getPersonByID(PersonID);
        newPerson.ID_Number = PersonID;

        SQLData.Persons.UpdatePerson(newPerson, person, null);

    }
}
}

3 个答案:

答案 0 :(得分:0)

将您的服务项目映射到本地IIS以进行调试。并从IIS路径添加服务引用它应该在一个解决方案本身。 右键单击WCF项目&gt;&gt;属性&gt;&gt; Web&gt;&gt;选择本地IIS Web服务器&gt;&gt;输入IIS应用程序路径的项目URL

答案 1 :(得分:0)

问题解决了...... 我是一个Dumb @ ss,通过从BackgroundWorker.ReportProgress调用WCF服务(我不认为这是一个问题(如果有人关心为什么会这样做),并在帖子中愚蠢地忽略了提及) 将对WCF服务的调用移至BackgroundWorker.ProcessCompleted解决了该问题。

答案 2 :(得分:-1)

项目中的

首先删除旧的服务引用 项目菜单===&gt;添加服务参考====&gt;高级... ====&gt;添加Web引用

然后在此解决方案链接中选择Web服务。