これを修正する方法はありますか?
UserService.UserServiceClient userServiceClient = new UserServiceClient();
userServiceClient.GetUsersCompleted += new EventHandler<GetUsersCompletedEventArgs>(userServiceClient_GetUsersCompleted);
userServiceClient.GetUsersAsync(searchString);
。
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="BasicHttpBinding_UserService"
maxBufferSize="2147483647"
maxReceivedMessageSize="2147483647">
<security mode="None" />
</binding>
</basicHttpBinding>
</bindings>
<client>
<endpoint address="http://localhost:52185/UserService.svc"
binding="basicHttpBinding"
bindingConfiguration="BasicHttpBinding_UserService"
contract="UserService.UserService"
name="BasicHttpBinding_UserService" />
</client>
<behaviors>
<serviceBehaviors>
<behavior name="Shell.Silverlight.Web.Service3Behavior">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="false" />
</behavior>
</serviceBehaviors>
</behaviors>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true"/>
<services>
<service behaviorConfiguration="Shell.Silverlight.Web.Service3Behavior"
name="Shell.Silverlight.Web.Service3">
<endpoint address=""
binding="basicHttpBinding"
contract="Shell.Silverlight.Web.Service3" />
<endpoint address="mex"
binding="mexHttpBinding"
contract="IMetadataExchange" />
</service>
</services>
</system.serviceModel>
ServiceModelクライアント構成セクションでコントラクト「UserService.UserService」を参照するデフォルトのエンドポイント要素が見つかりませんでした。これは、アプリケーションの構成ファイルが見つからなかったか、クライアント要素でこのコントラクトに一致するエンドポイント要素が見つからなかったためです。
解決済み!
これがSilverlightアプリケーションであることは言及しませんでした。 DLLにwcf参照があり、独自の「ServiceReferences.ClientConfig」ファイルがありました。 DLLのServiceReferences.ClientConfigの内容をメインのsilverlightプロジェクトに移動し、機能しました。
私は同じ問題に直面しました。私のアプリケーションもSilverlightアプリケーションであり、サービスはその中で使用されているカスタムUserControlを使用してクラスライブラリから呼び出されていました。
解決策は簡単です。クラスライブラリの構成ファイル(たとえば、ServiceReferences.ClientConfig)からエンドポイント定義をsilverlightアプリケーションの構成ファイルにコピーします。これを行わなくても機能すると期待していることは知っていますが、レドモンドの誰かがその日休暇をとっていたようです。
クラスライブラリでこれらの値をプログラムで設定することもできます。これにより、ライブラリ全体での構成ファイルの不必要な移動が回避されます。単純なBasciHttpBindingのサンプルコードは-
BasicHttpBinding basicHttpbinding = new BasicHttpBinding(BasicHttpSecurityMode.None);
basicHttpbinding.Name = "BasicHttpBinding_YourName";
basicHttpbinding.Security.Transport.ClientCredentialType = HttpClientCredentialType.None;
basicHttpbinding.Security.Message.ClientCredentialType = BasicHttpMessageCredentialType.UserName;
EndpointAddress endpointAddress = new EndpointAddress("http://<Your machine>/Service1/Service1.svc");
Service1Client proxyClient = new Service1Client(basicHttpbinding,endpointAddress);
WPF(Silverlightではなく)を使用しているときに同じ問題が発生した場合に備えて:
Webサービスに接続するときにこのエラーが発生しました。私のコードが「メイン」WPFアプリケーションソリューションにあったとき、問題なく、完全に機能しました。しかし、コードをより賢明なDALレイヤーソリューションに移動すると、例外がスローされます。
ServiceModelクライアント構成セクションでコントラクト「MyWebService.MyServiceSoap」を参照するデフォルトのエンドポイント要素が見つかりませんでした。これは、アプリケーションの構成ファイルが見つからなかったか、クライアント要素でこのコントラクトに一致するエンドポイント要素が見つからなかったためです。
このスレッドの「スプライト」で述べられているように、タグを手動でコピーする必要があります。
WPFアプリの場合、これは、DALソリューションのapp.configからメインのWPFアプリケーションソリューションのapp.configにタグをコピーすることを意味します。
何らかの理由で、最初にサービスを追加したときにVisual StudioがWeb構成を更新しなかったのと同じ問題に遭遇しました。サービスリファレンスを更新すると、この問題も修正されることがわかりました。
手順:
WCFサービスのweb.configを "endpoint address =" "binding =" basicHttpBinding "..."(以前のbinding = "wsHttpBinding")として変更します。アプリをビルドした後、 "ServiceReferences.ClientConfig"で "" configuration>の値が。その後、正常に動作します。
Svcutil.exeによって生成されたoutput.configの名前をapp.configに変更します。それは私のために働いた。
「UserService」クラスが実装するインターフェイスはありますか?.
エンドポイントは、契約属性のインターフェースを指定する必要があります。
contract="UserService.IUserService"
これが問題かどうかわかりません。エンドポイントとバインディングの両方に同じ名前があります
それが本当に問題なのかどうかはわかりませんが、バインディング構成()で同じ名前を持っているようです。
私は通常、エンドポイントを「UserServiceBasicHttp」または同様のもの(「バインディング」には実際には何もしません)のような名前を付けようとします。 「UserServiceDefaultBinding」、潜在的な名前の衝突を回避します。
マーク
呼び出すApp.configファイルにサービスを追加して、機能させる必要がありました。結局のところ、あなた以外のことを確認してください。これは私にとってはうまくいくようでした。
AX 2012 AIFサービスで作業し、そこに呼び出そうとする場合C#またはVB AX内のプロジェクト(x ++)で、次のようなエラーが発生します- "デフォルトのエンドポイントが見つかりませんでした" ...または"契約が見つかりません" ...サービスを定義する前に、Visual Studio(c#)プロジェクトに戻り、これらの行を追加しますクライアント、次にプロジェクトをデプロイし、AXクライアントを再起動して再試行します:注:NetTcp adapterの例です。必要に応じて他のアダプターを簡単に使用できます。
Uri Address = new Uri("net.tcp://your-server:Port>/DynamicsAx/Services/your-port-name");
NetTcpBinding Binding = new NetTcpBinding();
EndpointAddress EndPointAddr = new EndpointAddress(Address);
SalesOrderServiceClient Client = new SalesOrderServiceClient(Binding, EndPointAddr);
この問題は、他のアプリケーションを介してサービスを使用する場合に発生します。アプリケーションに設定ファイルがある場合は、このファイルにサービス設定情報を追加するだけです。私の状況では設定ファイルがなかったので、このテクニックを使用するとうまくいきました。URLアドレスをアプリケーションに保存し、それを読んでBasicHttpBinding()メソッドを使用してパラメータとしてサービスアプリケーションに送信します。それ:
Configuration config = new Configuration(dataRowSet[0]["ServiceUrl"].ToString());
var remoteAddress = new System.ServiceModel.EndpointAddress(config.Url);
SimpleService.PayPointSoapClient client =
new SimpleService.PayPointSoapClient(new System.ServiceModel.BasicHttpBinding(),
remoteAddress);
SimpleService.AccountcredResponse response = client.AccountCred(request);