我的页面似乎不允许我对我的服务文件方法执行ajax调用

时间:2013-10-17 11:41:37

标签: c# asp.net ajax web-services

我收到错误400,错误请求。

我有一组我试图写的页面。 (仅列出相关)

  • ./ Webpage.aspx
  • ./ web服务/ WebCalls.svc
  • ./ web服务/ IWebCalls.cs
  • ./的Web.config

我正在寻找允许我的前端与Webcalls页面进行通信,如下所示:

$.ajax({
   url: "webservices/WebCalls.svc/DoWork", 
   success: function(){
      console.log(arguments);
   }
});

但似乎没有效果。

我正在考虑创建这样的文件:

WebCalls.svc:

public class WebCalls: IWebCalls
{
    public string DoWork()
    {
        return "{\"hello\":\"Chop Wood, Carry Water.\"}";
    }
}

和IWebCalls.cs:

[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Required)]

public interface IWebCalls
{
    [OperationContract]
    [WebInvoke(Method = "GET",
        ResponseFormat = WebMessageFormat.Json,
        BodyStyle = WebMessageBodyStyle.Wrapped,
        UriTemplate = "DoWork")]
    string DoWork();
}

在我的webConfig中,我认为我正确设置了它:

<behaviors>
  <endpointBehaviors>
    <behavior name="web">
      <webHttp helpEnabled="true" />
    </behavior>
  </endpointBehaviors>
  <serviceBehaviors>
    <behavior name="ServiceBehavior">
      <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true" httpGetUrl=""/>
      <serviceDebug includeExceptionDetailInFaults="false" />
    </behavior>
    <behavior name="">
      <serviceMetadata httpGetEnabled="true" />
      <serviceDebug includeExceptionDetailInFaults="false" />
    </behavior>
  </serviceBehaviors>
</behaviors>
<serviceHostingEnvironment multipleSiteBindingsEnabled="true" aspNetCompatibilityEnabled="true" />
<services>
  <service behaviorConfiguration="ServiceBehavior" name="MyProj.WebCalls">
    <endpoint address="" behaviorConfiguration="web" binding="webHttpBinding"
      bindingConfiguration="LargeWeb" name="LargeWeb" contract="MyProj.webservices.IWebCalls" />
    <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
  </service>
</services>
<bindings>
  <webHttpBinding>
    <binding name="LargeWeb"
             maxBufferPoolSize="15000000"
             maxReceivedMessageSize="15000000"
             maxBufferSize="15000000">
      <readerQuotas
            maxArrayLength="15000000"
            maxBytesPerRead="15000000"
            maxDepth="32"
            maxNameTableCharCount="15000000"
            maxStringContentLength="15000000"
        />
    </binding>
  </webHttpBinding>
</bindings>

当我运行它时,它只是告诉我它已经创建了一个服务,但当我尝试调用时: DoWork 它会出现400错误。

我的方法有问题吗?我只是想建立一组页面,以便我可以查询数据。最初,我打算为我想创建的EACH函数创建一个GenericHander.asxh,但我认为这是太多的空间。我知道这样的事情是一种选择,但似乎它不起作用。

1 个答案:

答案 0 :(得分:1)

您可能修饰了错误的界面ITestService。而是检查IWebCalls的声明。

编辑:嗯..我看到你更新了问题...

我认为您的服务名称可能应该是name="MyProj.webservices.WebCalls" - 但假设这也是一个拼写错误,我看到的唯一问题是mex端点不应该存在。 mex端点不适用于基于REST的服务。