WCFサービスが新しく、何か助けが必要です。WCFサービスからオブジェクトを取得する際にエラーが発生しました
は、だから、私は合格し、文字列などの標準オブジェクトを取得しにint型前後することができ、それによって(localhostではありません、テストサーバー上でホストされている)WS
をテストするためのクライアント(基本的なコンソールアプリケーション)を持っています。
カスタムクラスをWSに渡すこともできますが、取得することはできません。私はどちらか、タイムアウトまたは
An error occurred while receiving the http response to... this could be due
to the service endpoint binding not using the http protocol. this could also be due to an
http request context being aborted by the server (possibly due the
the service shutting down)
The underlying connection was closed. An unexpected error occurred on receive.
Unable to read data from the transport connection, an existing connection
was forcibly closed by the remote host.
私は、エンドポイントについて検索し、プロジェクトが作成されたときに、すべての単一のものは、私は現在、株式のweb.configファイルを使用しています明らかに適応異なるといないように見えたを取得している私は私の問題はなく、あるところだと思います以下何を入れるべきかを知るのが難しいと感じる。
WSのWeb.config
質問で<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</configSections>
<appSettings />
<system.web>
<compilation debug="true" targetFramework="4.0" />
<httpRuntime />
</system.web>
<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior>
<serviceMetadata httpGetEnabled="true" httpsGetEnabled="false" />
<serviceDebug includeExceptionDetailInFaults="false" />
</behavior>
</serviceBehaviors>
</behaviors>
<protocolMapping>
<add binding="basicHttpsBinding" scheme="https" />
</protocolMapping>
<serviceHostingEnvironment aspNetCompatibilityEnabled="false" multipleSiteBindingsEnabled="true" />
</system.serviceModel>
<system.webServer>
<modules runAllManagedModulesForAllRequests="true" />
<directoryBrowse enabled="true" />
</system.webServer>
<connectionStrings>
<add name="CNS" connectionString="xyz" providerName="System.Data.EntityClient" />
</connectionStrings>
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
<providers>
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
</providers>
</entityFramework>
</configuration>
サービスメソッド(期待どおりに動作)
public Request GetOrderByRef(string Ref)
{
AssetStockEntity db = new AssetStockEntity();
try
{
RequestEntity _requestef = new RequestEntity();
_requestef = db.RequestEntities.FirstOrDefault(x => x.Incident == Ref);
if (_requestef == null)
return null;
else
return TranslateRequestEntityToRequest(_requestef);
}
catch (Exception ex)
{
string debug = ex.ToString();
}
}
EDIT
データベース接続のテスト
public string GetOrderByRefTest(string Ref)
{
AssetStockEntity db = new AssetStockEntity();
try
{
RequestEntity _requestef = new RequestEntity();
_requestef = db.RequestEntities.FirstOrDefault(x => x.Incident == Ref);
if (_requestef == null)
return null;
else
return _requestef.Requested_By;
}
catch (Exception ex)
{
string debug = ex.ToString();
return debug;
}
}
私はEFオブジェクトを変換するためにtranslateコールを使用して、私が理解できるものが露出しないようにしています。
クラス
[DataContract]
public class Request
{
[DataMember]
public int RId { get; set; }
[DataMember]
public string Incident { get; set; }
[DataMember]
public string Requested_By { get; set; }
[DataMember]
public string Authorised_By { get; set; }
[DataMember]
public virtual ICollection<Request_Items> Request_Items { get; set; }
}
インタフェース
[ServiceContract]
public interface Iws
{
[OperationContract]
Request GetOrderByRef(string Ref);
}
テストコンソール
static void Main(string[] args)
{
ASM.IwsClient ws = new ASM.IwsClient();
try
{
Console.WriteLine(ws.GetOrderByRef("ABC123").Requested_By);
Thread.Sleep(5000);
}
catch (Exception ex)
{
Console.WriteLine(ex);
Thread.Sleep(500000);
}
}
**解決しました。
この問題は、説明を簡潔にするために省略したパラメータであり、実際には原因であり、シリアル化されていないため、拒否されました。
このリンクにより、実際のエラーを追跡するのに役立つエラートレースが有効になりました。 http://www.codewrecks.com/blog/index.php/2012/04/23/troubleshoot-wcf-exception/ –