0

嗨,我在我的应用程序中使用 WCF Rest 并采用分层架构。我的数据流层次结构如下:

Data Layer -> Linq2Sql
||
Business Layer
||
WCF Rest Service
||
ASPX Pages

我通过 JQuery 使用 JSON 来选择/删除并使用代码隐藏来插入/更新,这样我就可以使用 WCF 服务通过我的业务层将 .Net 对象传递到数据库库(以检查我是否有它们的业务逻辑。)。

例如,我在我的业务层加密密码和解密密码并将其发送到数据层。无论如何,这不是问题。问题在于 WCF 服务配置设置。每次我得到独特的例外,比如:

  1. 404 错误请求。
  2. http://localhost/Service.svc上没有可以接受消息的端点侦听。
  3. 在服务模型客户端配置部分中找不到引用合同“xxx”的默认端点元素。这可能是因为没有为您的应用程序找到配置文件,或者因为在客户端元素中找不到与此合同匹配的端点元素等等......

我尝试的是

  1. 根据Tom Haigh建议的答案。受保护的 Save_Click(sender,e) {

    var user = new User { Login = login.Value, Password = pwd.Value, RealName = realname.Value, AccessRight = accessrights.Value, CustomAccesRight = customaccessrights.Value };

        var remoteAddress = new EndpointAddress("http://localhost:2360/UserService.svc");
    
        using (var client = new UserServiceClient(new BasicHttpBinding(), remoteAddress))
        {
            //set timeout
            client.Endpoint.Binding.SendTimeout = new TimeSpan(0, 0, 0, 10000);
    
            //call ws method
            client.Insert(user);
        } //using
    

}

  1. 我也尝试过删除,得到错误 400

    受保护的 Save_Click(sender,e) {

    var user = new User { Login = login.Value, Password = pwd.Value, RealName = realname.Value, AccessRight = accessrights.Value, CustomAccesRight = customaccessrights.Value };

        var remoteAddress = new EndpointAddress("http://localhost:2360/UserService.svc");
    
       var client = new UserServiceClient(new BasicHttpBinding(), remoteAddress);
    
            //set timeout
            client.Endpoint.Binding.SendTimeout = new TimeSpan(0, 0, 0, 10000);
    
            //call ws method
            client.Insert(user);
    

}

我的服务配置文件:

<system.serviceModel>
    <services>
      <service name="EnergyManagementControl.WcfSvc.UserService"  behaviorConfiguration="ServiceBehaviour" >
        <endpoint name="" binding="webHttpBinding"   contract="EnergyManagementControl.WcfSvc.IUserService" address="http://localhost:2360/UserService.Svc"   behaviorConfiguration="web"></endpoint>
      </service>
    </services>
    <behaviors>
      <serviceBehaviors>
        <behavior name="ServiceBehaviour"  >
          <serviceMetadata  httpGetEnabled="True"/>
          <serviceDebug includeExceptionDetailInFaults="true"/>
        </behavior>
      </serviceBehaviors>
      <endpointBehaviors>
        <behavior name="web">
          <webHttp/>
        </behavior>
      </endpointBehaviors>
    </behaviors>
  </system.serviceModel>

我的客户端配置文件

<system.serviceModel>
    <client>
      <endpoint
        name = "Receptor"
         address="http://localhost:2360/UserService.Svc" 
        binding = "wsHttpBinding"
        contract="IUserService"
    />
    </client>
  </system.serviceModel>

但似乎没有任何帮助。我知道它的配置错误,请帮助我。此外,根据我的场景对 WCF 休息的任何简要参考都会有很大帮助.....

请注意,WCF 是作为 WCF 服务应用程序创建的,并且是我的 Web 应用程序解决方案中的一个项目。见下图: 在此处输入图像描述

我也在 WebDev Server 上收到错误,而不是在 IIS 或 Cassini 上

4

1 回答 1

0

对于 REST 服务的 WCF 使用情况,我不能说太多,但您的服务和客户端端点绑定不匹配。WCF 使用绑定来查找匹配的终结点。

于 2012-05-06T04:06:16.267 回答