0

私はWebサービスを作成するのが初めてで、Webサービスにアクセスする方法を正確に理解していません。

私がやろうとしているのは、投稿されたJSONデータを読み取り、逆シリアル化してから何かを実行するWCFWebサービスを作成することです。

2つのメソッドが公開され、URIエンドポイントが作成された非常に単純なWCFサービスを作成しました。でも、ウリに行くと何も得られません。

'http:// localhost:8000 / asd / EchoWithGet?s = Hello、world!'に移動できるはずです。私のブラウザでは、そのメソッドは「あなたが言った」+sを返すはずです。サービスを実行している状態でそこに移動すると、何も表示されません。

私の質問は、プログラムをどのようにインターフェースするかです。HTMLフォームを介してサービスに投稿してからIOリーダーを開くこともできますか?

助けてくれてありがとう。

以下は私のコードです。

namespace WcfService1
{
[ServiceContract]
public interface IService1
{
    [OperationContract]
    [WebGet]
    string EchoWithGet(string s);

    [OperationContract]
    [WebInvoke]
    string EchoWithPost(string s);
}

public class Service1 : IService1
{
    public string EchoWithGet(string s)
    {
        return "You said " + s;
    }
    public string EchoWithPost(string s)
    {
        return "You said " + s;
    }
}

class program
{
    static void Main(string[] args)
    {
        WebServiceHost host = new WebServiceHost(typeof(Service1), new Uri("http://localhost:8000/asd/"));
        ServiceEndpoint ep = host.AddServiceEndpoint(typeof(IService1), new WebHttpBinding(), "");

        /*
        ServiceDebugBehavior sdb = host.Description.Behaviors.Find<ServiceDebugBehavior>();
        sdb.HttpHelpPageEnabled = false;
        */

        host.Open();

        Console.WriteLine("Service is running");
        Console.WriteLine("Press enter to quit...");
        Console.ReadLine();
        host.Close();
    }
}

助けてくれてありがとう

更新されました。私の問題は設定ファイルに起因すると思います。ブラウザを介してWebサービスを利用できるようにするには、構成ファイルにどのような情報を追加する必要がありますか?

<?xml version="1.0"?>
<configuration>
<system.web>
<compilation debug="true" targetFramework="4.0" />
</system.web>
<system.serviceModel>
<behaviors>
  <serviceBehaviors>
    <behavior>
      <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

0

以下のコードを使用して変更し、再度確認することができます。

    <system.serviceModel>
  <services>     
  <service behaviorConfiguration="WcfService1.Service1Behavior"
    name="WcfService1.Service1">
    <endpoint address="" behaviorConfiguration="JSONEndpointBehavior"
      binding="webHttpBinding" contract="WcfService1.IService1" />
    <endpoint address="ws" binding="wsHttpBinding" contract="WcfService1.IService1">
    </endpoint>
    <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />       
  </service>
</services>
<behaviors>
  <endpointBehaviors>
    <behavior name="JSONEndpointBehavior">
      <webHttp />
    </behavior>
  </endpointBehaviors>
  <serviceBehaviors>
    <behavior name="WcfService1.Service1Behavior">
      <serviceMetadata httpGetEnabled="true" />
      <serviceDebug includeExceptionDetailInFaults="false" />
    </behavior>        
  </serviceBehaviors>
</behaviors>

以下のコードでwebvokeを変更します

 [WebInvoke(Method = "GET", UriTemplate = "/EchoWithPost/{s}", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)]

string EchoWithPost(string s);

于 2013-03-12T10:24:29.287 に答える
0

Web.config ファイルの serviceModel セクションで試してください:

  <system.serviceModel>
    <services>
      <service behaviorConfiguration="RestServiceBehavior" name="Service1">
        <endpoint address="" behaviorConfiguration="web" binding="webHttpBinding"
          bindingConfiguration="webHttpBindingWithJSONP" contract="IService1" />
      </service>
    </services>

    <bindings>
      <webHttpBinding>
        <binding name="webHttpBindingWithJSONP"/>
      </webHttpBinding>
    </bindings>

    <behaviors>
      <endpointBehaviors>
        <behavior name="web">
          <webHttp />
        </behavior>
      </endpointBehaviors>
      <serviceBehaviors>
        <behavior name="RestServiceBehavior">
          <serviceMetadata httpGetEnabled="true" />
          <serviceDebug includeExceptionDetailInFaults="true" />
        </behavior>
      </serviceBehaviors>
    </behaviors>

    <serviceHostingEnvironment aspNetCompatibilityEnabled="true"
      multipleSiteBindingsEnabled="true" />
  </system.serviceModel>
于 2013-03-12T10:56:43.557 に答える