2

JSONを返すWCFサービスがあります。Fiddle を使用してテストしたい (これは、私がフォローしていたチュートリアルで使用されているアプリケーションです)。問題は、たとえば「AddAngajat」を呼び出すときに HTTP 404 エラーが発生することです。

サービスの実装 :

[ServiceBehavior(InstanceContextMode=InstanceContextMode.Single, AddressFilterMode=AddressFilterMode.Any)]
    public class AngajatService : InterfaceAngajat
    {
        List<Angajat> listaAngajati =null;

        public AngajatService()
        {
            if (listaAngajati == null)
                listaAngajati = new List<Angajat>();
        }

        [WebInvoke(Method="POST", UriTemplate = "AddAngajat", ResponseFormat=WebMessageFormat.Json)]
        public void AddAngajat(Angajat angajat)
        {
            listaAngajati.Add(angajat);
        }
        public Angajat[] GetAllAngajati()
        {
            listaAngajati.Add(new Angajat() { idAngajat = "2f34", nume = "nume1" });
            return listaAngajati.ToArray();
        }
    }

App.config :

 <?xml version="1.0"?>
<configuration>
  <system.web>
    <compilation debug="true" targetFramework="4.0"/>
  </system.web>
  <system.serviceModel>
    <services>
      <service name="testJSON.AngajatService">
        <endpoint address="mex" binding="mexHttpBinding" bindingConfiguration=""
          contract="IMetadataExchange" />
        <endpoint address="json" behaviorConfiguration="JSONEndpointBehavior"
          binding="webHttpBinding" bindingConfiguration="" contract="testJSON.InterfaceAngajat" />
        <host>
          <baseAddresses>
            <add baseAddress="http://localhost/testJSON/" />
          </baseAddresses>
        </host>
      </service>
    </services>
    <behaviors>
      <endpointBehaviors>
        <behavior name="JSONEndpointBehavior">
          <webHttp/>
        </behavior>
      </endpointBehaviors>
      <serviceBehaviors>
        <behavior name="">
          <serviceMetadata httpGetEnabled="true"/>
          <serviceDebug includeExceptionDetailInFaults="false"/>
        </behavior>
      </serviceBehaviors>
    </behaviors>
    <serviceHostingEnvironment multipleSiteBindingsEnabled="true"/>
  </system.serviceModel>
  <system.webServer>
    <modules runAllManagedModulesForAllRequests="true"/>
  </system.webServer>
</configuration>

これを修正する方法について何か考えはありますか? それをテストする他の方法は?

4

2 に答える 2

2

フィドラーからのリクエストは次のようになります。

POST http://localhost/VirtualDirectoryName/testJson/service.svc/json/Addangajat HTTP/1.1
Content-Type: application/json
Content-Length: 47

{"Id":6,"StringValue":"from client rajeshwin7"}

オブジェクト「Angajat」の構造が2つのプロパティIdとStringValueを持っていると仮定します。

フィドルからカッシーニでホストされているサービスに対してGET/POST呼び出しを実行できるかどうかはわかりません。むしろIISでホストしてから、フィドラーを使用してサービスを呼び出します。IISでホストしたくない場合は、HttpWebRequestで.NETクライアントを使用してRESTサービスを呼び出します。

于 2012-03-27T09:47:21.690 に答える
1

あなたは電話する必要がありhttp://localhost:8732/testJSON/json/AddAngajat、それはうまくいくはずです。

それ以外の場合は、クライアント コード (またはスニペット) を含めます。

アップデート

あなたが言及した変更により、URLはこれでなければなりませんhttp://localhost/testJSON/Service.svc/json/AddAngajat

于 2012-03-27T09:24:18.083 に答える