0

こんにちは私は、階層化アーキテクチャを備えたアプリでWCFRestを使用しています。私のデータフロー階層は以下のとおりです。

Data Layer -> Linq2Sql
||
Business Layer
||
WCF Rest Service
||
ASPX Pages

WCF serviveを使用して、ビジネスレイヤーを介して.Netオブジェクトをデータベースベースに渡すことができるように、JQueryを介してJSONを使用して選択/削除し、コードビハインドを挿入/更新しています。

たとえば、私はビジネスレイヤーでパスワードを暗号化し、パスワードを解読してデータレイヤーに送信しています。とにかく、それは問題ではありません。問題は、WCFサービスの構成設定にあります。次のような固有の例外が発生するたびに:

  1. 404不正なリクエスト。
  2. メッセージを受け入れることができるhttp://localhost/Service.svcでリッスンしているエンドポイントはありませんでした。
  3. サービスモデルクライアント構成セクションでコントラクト「xxx」を参照するデフォルトのエンドポイント要素が見つかりませんでした。これは、アプリケーションの構成ファイルが見つからなかったか、このコントラクトに一致するエンドポイント要素がクライアント要素などで見つからなかったことが原因である可能性があります。

私が試したのは

  1. トム・ヘイが提案した答えによると。保護されたSave_Click(sender、e){

    var user = new User {Login = login.Value、Password = pwd.Value、RealName = realname.Value、AccessRight = accessrights.Value、CustomAccesRight = customaccessrights.Value};

        var remoteAddress = new EndpointAddress("http://localhost:2360/UserService.svc");
    
        using (var client = new UserServiceClient(new BasicHttpBinding(), remoteAddress))
        {
            //set timeout
            client.Endpoint.Binding.SendTimeout = new TimeSpan(0, 0, 0, 10000);
    
            //call ws method
            client.Insert(user);
        } //using
    

}

  1. 試したものを使用して削除しましたが、エラー400が発生しました

    保護されたSave_Click(sender、e){

    var user = new User {Login = login.Value、Password = pwd.Value、RealName = realname.Value、AccessRight = accessrights.Value、CustomAccesRight = customaccessrights.Value};

        var remoteAddress = new EndpointAddress("http://localhost:2360/UserService.svc");
    
       var client = new UserServiceClient(new BasicHttpBinding(), remoteAddress);
    
            //set timeout
            client.Endpoint.Binding.SendTimeout = new TimeSpan(0, 0, 0, 10000);
    
            //call ws method
            client.Insert(user);
    

}

私のサービスの設定ファイル:

<system.serviceModel>
    <services>
      <service name="EnergyManagementControl.WcfSvc.UserService"  behaviorConfiguration="ServiceBehaviour" >
        <endpoint name="" binding="webHttpBinding"   contract="EnergyManagementControl.WcfSvc.IUserService" address="http://localhost:2360/UserService.Svc"   behaviorConfiguration="web"></endpoint>
      </service>
    </services>
    <behaviors>
      <serviceBehaviors>
        <behavior name="ServiceBehaviour"  >
          <serviceMetadata  httpGetEnabled="True"/>
          <serviceDebug includeExceptionDetailInFaults="true"/>
        </behavior>
      </serviceBehaviors>
      <endpointBehaviors>
        <behavior name="web">
          <webHttp/>
        </behavior>
      </endpointBehaviors>
    </behaviors>
  </system.serviceModel>

クライアントの私の設定ファイル

<system.serviceModel>
    <client>
      <endpoint
        name = "Receptor"
         address="http://localhost:2360/UserService.Svc" 
        binding = "wsHttpBinding"
        contract="IUserService"
    />
    </client>
  </system.serviceModel>

しかし、何も役に立たないようです。私はその設定エラーを知っています、助けてください。また、私のシナリオに基づいたWCFの残りの部分に関する簡単なリファレンスは、非常に役立ちます。

WCFはWCFサービスアプリケーションとして作成されており、Webアプリを使用したソリューションのプロジェクトであることに注意してください。下の画像を参照してください。 ここに画像の説明を入力してください

また、IISやカッシーニではなくWebDevサーバーでエラーが発生します

4

1 に答える 1

0

REST サービスでの WCF の使用についてはあまり話せませんが、サービスとクライアント エンドポイントのバインディングが一致しません。WCF はバインディングを使用して、一致するエンドポイントを見つけます。

于 2012-05-06T04:06:16.267 に答える