WCF服务尝试连接到数据库时不工作

时间:2012-05-30 12:25:14

标签: asp.net wcf visual-studio-2010 .net-4.0

我创建了一个与数据库通信的WCF服务,首先我创建了一个样本Helloworld!方法,它正常工作

但是当我尝试调用实际方法时,它会给出以下异常

  

接收到http://10.11.32.211:87/Service.svc的HTTP响应时发生错误。这可能是由于服务端点绑定不使用HTTP协议。

在浏览器中

  

远程主机强行关闭现有连接

我的web.config文件

<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;
            }
        }

我可以手动从不同的网站调用相同的存储过程但不使用此服务....

这是什么?为什么会这样?

2 个答案:

答案 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>