关于wcf的 "由于服务器中止了 HTTP 请求上下文(可能由于服务关闭) "错误
web.config内容如下<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.web>
<compilation debug="true" />
</system.web>
<!-- 部署服务库项目时,必须将配置文件的内容添加到
主机的 app.config 文件中。System.Configuration 不支持库的配置文件。-->
<system.serviceModel>
<services>
<service name="Microsoft.ServiceModel.Samples.WeatherService" POST http://forum.csdn.net/PointForumviceBehavior">
<host>
<baseAddresses>
<add baseAddress = "http://172.16.81.71:8731/servicemodelsamples/service/WeatherService/" />
</baseAddresses>
</host>
<!-- Service Endpoints -->
<!-- 除非完全限定,否则地址将与上面提供的基址相关 -->
<endpoint address ="" binding="wsHttpBinding" contract="Microsoft.ServiceModel.Samples.IWeatherService">
<!--
部署时,应删除或替换下列标识元素,以反映
在其下运行部署服务的标识。删除之后,WCF 将
自动推导相应标识。
-->
<identity>
<dns value="172.16.81.71"/>
</identity>
</endpoint>
<!-- Metadata Endpoints -->
<!-- 元数据交换终结点由服务用于向客户端做自我描述。-->
<!-- 此终结点不使用安全绑定,应在部署前确保其安全或将其删除-->
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="WeatherServiceBehavior">
<!-- 为避免泄漏元数据信息,
请在部署前将以下值设置为 false 并删除上面的元数据终结点 -->
<serviceMetadata httpGetEnabled="True"/>
<!-- 要接收故障异常详细信息以进行调试,
请将下值设置为 true。在部署前
设置为 false 以避免泄漏异常信息-->
<serviceDebug includeExceptionDetailInFaults="False" />
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
</configuration>
程序运行时报告错误如下:
接收对 http://windows-zheufoa/ServiceModelSamples/service.svc 的 HTTP 响应时发生错误。这可能是由于服务终结点绑定未使用 HTTP 协议造成的。这还可能是由于服务器中止了 HTTP 请求上下文(可能由于服务关闭)所致。有关详细信息,请参阅服务器日志。
我的开发环境是.net2008,framwork3.5,windows server 2008
如果在浏览器地址栏输入http://localhost/servicemodelsamples/service.svc是可以看到"已创建服务"页面的。
到底什么原因造成上述错误,如何解决? --------------------编程问答-------------------- up --------------------编程问答--------------------
帮我顶,谢谢兄弟! --------------------编程问答-------------------- 没有遇到过友情帮顶 --------------------编程问答-------------------- <?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.web>
<compilation debug="true" />
</system.web>
<system.serviceModel>
<services>
<service behaviorConfiguration="WeatherServiceBehavior" name="Microsoft.ServiceModel.Samples.WeatherService">
<endpoint address="" binding="wsHttpBinding" contract="Microsoft.ServiceModel.Samples.IWeatherService">
<identity>
<dns value="172.16.81.71" />
</identity>
</endpoint>
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
<host>
<baseAddresses>
<add baseAddress="http://172.16.81.71:8731/servicemodelsamples/service/WeatherService/" />
</baseAddresses>
</host>
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="WeatherServiceBehavior">
<serviceMetadata httpGetEnabled="True"/>
<serviceDebug includeExceptionDetailInFaults="False" />
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
</configuration> --------------------编程问答-------------------- <service name="Microsoft.ServiceModel.Samples.WeatherService" POST http://forum.csdn.net/PointForumviceBehavior">
这一句好像有问题,在我机子上编译通不过,我把你的WEB.config修改了一下,看看行不行,这样的问题我以前没遇见过
--------------------编程问答-------------------- wcf没用过
看下是不是服务器拒绝请求??
或者报错了? --------------------编程问答-------------------- 学习,帮顶! --------------------编程问答-------------------- 可能是实体类序列化出了问题 --------------------编程问答-------------------- 你是下载的微软的例子吧,基于web的调用,需要是webHttpBinding
<endpoint address ="" binding="wsHttpBinding" contract="Microsoft.ServiceModel.Samples.IWeatherService"> --------------------编程问答-------------------- 这个问题我遇到过:
我的问题是在创建的wcf类的对外提供的方法体中漏了调用方法前面的对象,如:
public bool UpdateBusiness(ReportDefinitionInfo info)
{
try
{
return CBBLL.UpdateBusiness(info);
}
catch (Exception ex)
{
throw new FaultException<ExceptionDetail>(new ExceptionDetail(ex));
}
}
这一方法写成了如下的方法:
public bool UpdateBusiness(ReportDefinitionInfo info)
{
try
{
return UpdateBusiness(info);
}
catch (Exception ex)
{
throw new FaultException<ExceptionDetail>(new ExceptionDetail(ex));
}
}
由于某种原因,编译仍然可以,但是执行错误,错误提示如下(使用NUnit测试):
TestProject.WCF.testUpdateBusiness:
System.ServiceModel.CommunicationException : 接收对 http://192.168.1.189:8083/CustomBusiness 的 HTTP 响应时发生错误。这可能是由于服务终结点绑定未使用 HTTP 协议造成的。这还可能是由于服务器中止了 HTTP 请求上下文(可能由于服务关闭)所致。有关详细信息,请参见服务器日志。
----> System.Net.WebException : 基础连接已经关闭: 接收时发生错误。
----> System.IO.IOException : 无法从传输连接中读取数据: 远程主机强迫关闭了一个现有的连接。。
----> System.Net.Sockets.SocketException : 远程主机强迫关闭了一个现有的连接。
补充:.NET技术 , Web Services