我创建了一个与数据库通信的WCF服务,首先我创建了一个样本Helloworld!
方法,它正常工作
但是当我尝试调用实际方法时,它会给出以下异常
接收到http://10.11.32.211:87/Service.svc的HTTP响应时发生错误。这可能是由于服务端点绑定不使用HTTP协议。
在浏览器中
远程主机强行关闭现有连接
<configuration>
<system.web>
<compilation debug="true" targetFramework="4.0"/>
</system.web>
<!--<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior name="">
<serviceMetadata httpGetEnabled="true"/>
<serviceDebug includeExceptionDetailInFaults="true"/>
</behavior>
</serviceBehaviors>
</behaviors>
<serviceHostingEnvironment multipleSiteBindingsEnabled="true"/>
</system.serviceModel>-->
<system.serviceModel>
<serviceHostingEnvironment multipleSiteBindingsEnabled="true"/>
<services>
<service behaviorConfiguration="ServiceBehavior" name="Service">
<endpoint address="" binding="basicHttpBinding" contract="IService">
<identity>
<dns value="localhost"/>
</identity>
</endpoint>
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="ServiceBehavior">
<serviceMetadata httpGetEnabled="true"/>
<serviceDebug includeExceptionDetailInFaults="true"/>
<dataContractSerializer maxItemsInObjectGraph="2147483646"/>
<serviceThrottling maxConcurrentCalls="3000" maxConcurrentSessions="3000" maxConcurrentInstances="3000"/>
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
</configuration>
我通过这些链接,但它没有奏效 MSDN LINK1
实际上,我正在使用此服务执行的是在服务器上执行存储过程
using (con = new SqlConnection(connectionString))
{
using (cmd = new SqlCommand(selectStatement, con) { CommandType = CommandType.StoredProcedure })
{
adapter = new SqlDataAdapter(cmd);
table = new DataTable();
adapter.Fill(table);
return table;
}
}
我可以手动从不同的网站调用相同的存储过程但不使用此服务....
这是什么?为什么会这样?
答案 0 :(得分:1)
我找到了这个here的答案,我们只需要在构造函数中实例化具有指定名称的数据表
喜欢
DataTable dt = new DataTable("TableName");
我不知道为什么会出错,但这解决了这个问题........
答案 1 :(得分:0)
尝试增加发送或接收超时并为basicHttpBinding
分配正确的readerQuotas。
<bindings>
<basicHttpBinding>
<binding maxBufferSize="5000000" maxBufferPoolSize="524288" maxReceivedMessageSize="5000000" receiveTimeout="00:10:00" sendTimeout="00:10:00" >
<readerQuotas maxDepth="32" maxStringContentLength="80192" maxArrayLength="50000000" maxBytesPerRead="4096" maxNameTableCharCount="16384"/>
</binding>
</basicHttpBinding>
</bindings>