如何使用jQuery将WAX Web服务的AJAX调用添加到ASP.NET网页?

时间:2012-03-13 21:23:53

标签: jquery asp.net ajax wcf

我在网上看到了很多例子,但我很困惑这个服务应该是独立的还是与消费应用程序在同一个解决方案中。有人可以帮助我吗?

  1. 我是否需要将支持AJAX的WCF服务类型的文件添加到我的ASP.NET Web应用程序中,还是需要对WCF服务的Web服务引用?

  2. 当我使用jQuery Ajax函数时,有一个URL参数。我看到的所有示例都使用“Services/MyService.svc/MyMethodName”。这是因为该服务是在Web应用程序的解决方案内部吗?

  3. 我的WCF服务是否必须:

    [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]

  4. 我的网络服务电话是否需要具备以下属性?

    [WebInvoke(Method =“POST”,  BodyStyle = WebMessageBodyStyle.Wrapped,  ResponseFormat = WebMessageFormat.Json)]

  5. 我的网络应用程序或我的网络服务是否需要将行为设置为enableWebScript

  6. 我是否遗漏了所有必需的属性或设置?

    这是我在我的网络应用程序中的jquery ajax请求:

    $.ajax({
    type: "POST",
    url: "http://myserver/myservice.svc/mymethod",
    contentType: "application/json; charset=utf-8",
    data: "{" + args + "}",
    dataType: 'json',
    });
    

    这是我的网络服务web.config:

      <system.serviceModel>
        <bindings>
          <basicHttpBinding>
            <binding name="Basic" />
          </basicHttpBinding>
        </bindings>
        <services>
          <service behaviorConfiguration="ServiceBehavior" name="MyServiceName">
            <endpoint address="basic" 
                      binding="basicHttpBinding"
                      bindingConfiguration="Basic" 
                      name="Basic" 
                      contract="IService" />
            <endpoint address="web"
                      behaviorConfiguration="webHttpBehavior"
                      binding="webHttpBinding"
                      name="Web"
                      contract="IService" />
            <endpoint address="mex" 
                      binding="mexHttpBinding"
                      name="Metadata"
                      contract="IMetadataExchange" />
          </service>
        </services>
        <behaviors>
          <serviceBehaviors>
            <behavior name="ServiceBehavior">
              <serviceMetadata httpGetEnabled="true" />
              <serviceDebug includeExceptionDetailInFaults="true" />
            </behavior>
          </serviceBehaviors>
          <endpointBehaviors>
            <behavior name="webHttpBehavior">
              <webHttp/>
            </behavior>
          </endpointBehaviors>
        </behaviors>
        <serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
      </system.serviceModel>
    

1 个答案:

答案 0 :(得分:3)

  1. 不,你可以直接打电话
  2. 有点儿。这是一个基于网页与服务在托管环境中的位置的相对路径
  3. 如果您计划POST服务方法,是的。
  4. 是的,关于服务
  5. 包括

       <serviceMetadata httpGetEnabled="true"/> 
    

    在您的服务端点行为中。