【问题标题】:Web Service WCF and JavascriptWeb 服务 WCF 和 Javascript
【发布时间】:2014-03-22 17:34:27
【问题描述】:

我有 2 个项目(WCF 项目和 Asp.Net 项目)。我按照本教程 here 进行操作。

在本教程中,我们在一个项目中实现了所有功能(参见源代码here)。

我在 Web 项目中引用了我的 WCF 项目。

我尝试在警报中显示一个值,但什么也没有。

这是我的 Service1.svc :

 namespace WSSage100{
 [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
 public class Service1 : IService1
 {
    public string GetData(int value)
    {
        return string.Format("You entered: {0}", value);
    }

    public string GetData2(int value)
    {
        return string.Format("You entered: {0}", value);
    }


    public string[] GetUser(string Id)
    {
        return new User().GetUser(Convert.ToInt32(Id));
    }

    public string GetTEST()
    {
        return "OKKKKKKKK";
    }
}

这里是 IService1.cs :

namespace WSSage100
{

[XmlSerializerFormat]
[ServiceContract(Namespace ="WSSage100")]
public interface IService1
{

    [OperationContract]
    [WebInvoke(Method = "GET",ResponseFormat = WebMessageFormat.Json)]
    string GetData(int value);


    [OperationContract]
    [WebInvoke(Method = "GET", ResponseFormat = WebMessageFormat.Json)]
    string GetData2(int value);

    [OperationContract]
    [WebInvoke(Method = "POST",BodyStyle = WebMessageBodyStyle.Wrapped,ResponseFormat = WebMessageFormat.Json)]
    string[] GetUser(string Id);

    [OperationContract]
    [WebInvoke(Method = "GET",ResponseFormat = WebMessageFormat.Json)]
    string GetTEST();

这是我的带有 JavaScript 代码的网页 (aspx):

<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script language="javascript" type="text/javascript" src="JavaScript/jquery-1.10.2.min.js"></script>

<script type="text/javascript">

    var Type;
    var Url;
    var Data;
    var ContentType;
    var DataType;
    var ProcessData;

    function WCFJSON() {
        var userid = "1";
        Type = "POST";
        Url = "Service1.svc/GetUser";
        Data = '{"Id": "' + userid + '"}';
        ContentType = "application/json; charset=utf-8";
        DataType = "json"; varProcessData = true;
        CallService();
    }

    function CallService() {
        $.ajax({
            type: Type, //GET or POST or PUT or DELETE verb
            url: Url, // Location of the service
            data: Data, //Data sent to server
            contentType: ContentType, // content type sent to server
            dataType: DataType, //Expected data format from server
            processdata: ProcessData, //True or False
            success: function (msg) {//On Successfull service call
                ServiceSucceeded(msg);
            },
            error: ServiceFailed// When Service call fails
        });
    }

    function ServiceFailed(result) {
        alert('Service call failed: ' + result.status + '' + result.statusText);
        Type = null;
        varUrl = null;
        Data = null;
        ContentType = null;
        DataType = null;
        ProcessData = null;
    }

    function ServiceSucceeded(result) {
        if (DataType == "json") {
            resultObject = result.GetUserResult;

            for (i = 0; i < resultObject.length; i++) {
                alert(resultObject[i]);
            }

        }

    }

    function ServiceFailed(xhr) {
        alert(xhr.responseText);

        if (xhr.responseText) {
            var err = xhr.responseText;
            if (err)
                error(err);
            else
                error({ Message: "Unknown server error." })
        }

        return;
    }

    $(document).ready(
        function () {
            WCFJSON();
        }
    );
</script>
<style type="text/css">
    #form1 {
        height: 255px;
    }
</style>

</head>
 <body>
  <form id="form1" runat="server">

    <div></div>
  </form>
 </body>
</html>

这是我的 Web 项目中的 Service1.svc:

<%@ ServiceHost Language="C#" Debug="true" Service="WSSage100.Service1"%>

这是我的 Web 项目中的 web.config:

<configuration>
<system.web>
  <compilation debug="true" targetFramework="4.5" />
  <httpRuntime targetFramework="4.5" />

</system.web>

<system.serviceModel>
    <client>
        <endpoint address="http://localhost:52768/Service1.svc" binding="basicHttpBinding"
            bindingConfiguration="BasicHttpBinding_IService1"    contract="WebServiceSage100.IService1"
            name="BasicHttpBinding_IService1" />
    </client>
    <behaviors>
        <serviceBehaviors>
            <behavior name="">
                <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true" />
                <serviceDebug includeExceptionDetailInFaults="false" />
            </behavior>
        </serviceBehaviors>
      <endpointBehaviors>
        <behavior name="EndpBehavior">
          <webHttp/>
        </behavior>
      </endpointBehaviors>
    </behaviors>
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true"
        multipleSiteBindingsEnabled="true" />
    <bindings>
        <basicHttpBinding>
            <binding name="BasicHttpBinding_IService1" />
        </basicHttpBinding>
    </bindings>

  <services>
    <service name="WSSage100.Service1">
      <endpoint address=""  binding="webHttpBinding" contract="WSSage100.IService1">
      </endpoint>
    </service>
  </services>

  </system.serviceModel>
</configuration>

Brian, localhost:52768/Service1.svc 显示

我在使用 Inspect Element 时遇到此错误

我是这个领域的新手,很抱歉我的英语不好。

【问题讨论】:

  • 控制台有什么错误吗?
  • 如果你在浏览器地址栏中输入http://localhost:52768/Service1.svc,你会得到什么响应?

标签: c# javascript asp.net .net wcf


【解决方案1】:

我的解决方案中有 2 个项目,即 WCF 和一个应用程序控制台 (GettingStartedHost),它们将关闭 Web 服务。

我还在 GettingStartedHost 项目的 app.config 中添加了连接字符串,现在它运行良好。

【讨论】:

    猜你喜欢
    • 2015-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-25
    相关资源
    最近更新 更多