0

エラー 400、Bad Request が表示されます。

書こうとしていた一連のページがあります。(関連するリストのみ)

  • ./Webpage.aspx
  • ./webservices/WebCalls.svc
  • ./webservices/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 エラーが発生します。

私のアプローチに何か問題がありますか?データを照会できるように一連のページを作成しようとしています。もともと、作成したい関数ごとに GenericHander.asxh を作成するつもりでしたが、スペースが多すぎると思いました。このようなオプションがあることは知っていましたが、機能しないようです。

4

1 に答える 1

1

間違ったインターフェイスを装飾した可能性がありますITestService。代わりに の宣言を確認してくださいIWebCalls

編集:うーん..私はあなたが更新された質問を見ます...

あなたのサービス名はおそらくそうあるべきだと思いますname="MyProj.webservices.WebCalls"が、それもタイプミスであると仮定すると、私が目にする唯一の問題は、mexエンドポイントがそこにあってはならないということです。mexエンドポイントは REST ベースのサービス向けではありません。

于 2013-10-17T16:49:30.157 に答える