WCF的一个怪异问题,高手请进

超速U盘选购避坑指南:如何通过Rx Detect机制识别真伪USB3.0设备 本文深入解析了USB 3.0超速U盘的选购避坑要点,重点介绍了通过Rx Detect机制识别真伪设备的核心原理。文章提供了从软件检测到实际性能测试的完整方案,帮助消费者和技术人员有效辨别虚假的USB3.0设备,确保获得真正的超速传输体验。 阅读详情

今天遇到一个问题,系统基于WCF框架,不同的服务完全相似的代码,一个就报错,一个成功。而且报错的代码其实际顺利运行完毕所有代码,事务也成功地提交了,只是在返回信息时WCF给了一个错误信息:

<Fault xmlns="http://schemas.microsoft.com/ws/2005/05/envelope/none"><Code><Value>Receiver</Value><Subcode><Value xmlns:a="http://schemas.microsoft.com/net/2005/12/windowscommunicationfoundation/dispatcher">a:InternalServiceFault</Value></Subcode></Code><Reason><Text xml:lang="zh-CN">message 对象已被释放。</Text></Reason><Detail><ExceptionDetail xmlns="http://schemas.datacontract.org/2004/07/System.ServiceModel" xmlns:i="http://www.w3.org/2001/XMLSchema-instance"><HelpLink i:nil="true"/><InnerException i:nil="true"/><Message>message 对象已被释放。</Message><StackTrace>   在 System.ServiceModel.Channels.ByteStreamMessage.InternalByteStreamMessage.get_Properties()
↵   在 System.ServiceModel.OperationContext.get_IncomingMessageProperties()
↵   在 System.ServiceModel.Web.IncomingWebRequestContext.get_UriTemplateMatch()
↵   在 System.ServiceModel.Description.WebHttpBehavior.TrySetupJavascriptCallback(String callbackParameterName)
↵   在 System.ServiceModel.Dispatcher.JavascriptCallbackMessageInspector.BeforeSendReply(Message& reply, Object correlationState)
↵   在 System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.BeforeSendReplyCore(MessageRpc& rpc, Exception& exception, Boolean& thereIsAnUnhandledException)</StackTrace><Type>System.ObjectDisposedException</Type></ExceptionDetail></Detail></Fault>

经过排查,发现是由于Web.Config文件中binging节点的 crossDomainScriptAccessEnabled="true" 属性导致的,去掉后一切正常。微软官方帮助文档说该属性是用来设定是否允许跨域脚本访问,不清楚为何该属性会导致上述问题。只不过我们项目暂时不存在跨域访问问题,故去掉没有大碍。


具体web.config配置文件和代码如下:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <system.serviceModel>
    <services>
      <service behaviorConfiguration="Service.ServiceBehavior" name="VME.Service.PictureService">
        <endpoint address="" behaviorConfiguration="VME.Service.ServiceAspNetAjaxBehavior"
          binding="webHttpBinding" contract="VME.Contract.IPictureService" bindingConfiguration="webBinding" />
      </service>
      <service behaviorConfiguration="Service.ServiceBehavior" name="VME.Service.ServiceService">
        <endpoint address="" behaviorConfiguration="VME.Service.ServiceAspNetAjaxBehavior"
          binding="webHttpBinding" contract="VME.Contract.IServiceService" bindingConfiguration="serviceBinding" />
      </service>
    </services>
    <behaviors>
      <endpointBehaviors>
        <behavior name="VME.Service.ServiceAspNetAjaxBehavior">
          <enableWebScript />
        </behavior>
      </endpointBehaviors>
      <serviceBehaviors>
        <behavior name="Service.ServiceBehavior">
          <serviceThrottling maxConcurrentCalls="50" maxConcurrentSessions="50" maxConcurrentInstances="50"/>
          <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true"/>
          <serviceDebug includeExceptionDetailInFaults="true" />
          <dataContractSerializer maxItemsInObjectGraph="2147483647"/>
        </behavior>
      </serviceBehaviors>
    </behaviors>
    <protocolMapping>
      <add binding="webHttpBinding" scheme="http" />
    </protocolMapping>
    <bindings>
      <webHttpBinding>
        <binding name="webBinding" useDefaultWebProxy="false" crossDomainScriptAccessEnabled="true"
                 maxReceivedMessageSize="2147483647" maxBufferSize="2147483647" maxBufferPoolSize="2147483647"
                 sendTimeout="00:01:00" openTimeout="00:01:00" receiveTimeout="00:01:00" closeTimeout="00:01:00"
                 transferMode="Streamed" hostNameComparisonMode="StrongWildcard">
          <readerQuotas maxArrayLength="2147483647" maxStringContentLength="2147483647" maxDepth="32" maxBytesPerRead="4096" maxNameTableCharCount="16384"/>
          <security mode="None"></security>
        </binding>
        <binding name="serviceBinding" useDefaultWebProxy="false" crossDomainScriptAccessEnabled="true"
                 maxReceivedMessageSize="2147483647" maxBufferSize="2147483647" maxBufferPoolSize="2147483647"
                 sendTimeout="00:01:00" openTimeout="00:01:00" receiveTimeout="00:01:00" closeTimeout="00:01:00"
                 transferMode="Streamed" hostNameComparisonMode="StrongWildcard">
          <readerQuotas maxArrayLength="2147483647" maxStringContentLength="2147483647" maxDepth="32" maxBytesPerRead="4096" maxNameTableCharCount="16384"/>
          <security mode="None"></security>
        </binding>
      </webHttpBinding>
    </bindings>
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true"
      multipleSiteBindingsEnabled="true" />
  </system.serviceModel>
</configuration>

[ServiceContract]
public interface IPictureService
{
    [OperationContract]
    [WebInvoke(Method = "POST", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.WrappedRequest)]
    bool SendIdCardPicture(Stream idCardImg);
}

[ServiceContract]
public interface IServiceService
{
    [OperationContract]
    [WebInvoke(Method = "POST", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.WrappedRequest)]
    bool AddService(Stream service);
}
上面IPictureService接口的程序是能正常返回信息,而IServiceService接口的程序就报错。

有高手请给予指点迷津,到底哪里出了问题。



【100分- 求最多可以派出多少支团队】(题目+思路+Java&C++&Python解析+在线测试) 用数组代表每个人的能力,一个比赛活动要求参赛团队的最低能力值为N,每个团队可以由1人或者2人组成,且1个人只能参加1个团队,计算出最多可以派出多少只符合要求的团队。 阅读详情

相关推荐

晶圆测试厂wafer map管理建议

按照Recipe设定bin定义 应有版本管理概念,一般使用最新版本做为活动版本即可 Bin明细中应包含 BinID、BinCode、BinName、BinType、BinColor、Description BinID可使用数字类型 BinCode可参照实际机台的Bin,用于匹配 有些公司也将BinID、BinCode理解为SBin和HBin 即 Software Bin & Hardware Bin 一般也将BinID对应到客户的Bin BinType

凯神做开发 1万+

WCFRest应用简介

上周末把WCFRest稍微整理了下,不料到最后一步发现Post跨域提交不成功,调查了两晚还是没有什么解决方案,暂且当作其的一个缺陷吧(本质与WCFRest无关,是JsonP不支持跨域Post,或者说JsonP跨域的本质是还是Get)。示例主要分为两个方面:1.采用模板实现WCFRest;2.采用一般WCF服务的方式实现WCFRest以及客户端的调用。 1.采用模板实现WCFRest 一张图说明

1720

TSMC65nm工艺下Virtuoso仿真gm-id曲线的保姆级教程(含ADE设置详解)

本文提供了一份在TSMC 65nm工艺下使用Cadence Virtuoso绘制gm-id曲线的详细教程。内容涵盖从理解gm/id方法学、搭建仿真环境、深度解析ADE设置,到运行DC仿真、提取数据并生成对数坐标曲线的完整流程。教程重点解析了Virtuoso ADE中的关键设置与常见避坑点,旨在帮助模拟集成电路设计初学者快速掌握这一核心设计工具,为高性能电路设计奠定基础。

grpc6streamer的博客 1173

WCF跨域解决方法及一些零碎的东西,希望能帮助到更多的人,倒插一些配置

之前发过一篇随笔,说的WCF配置文件配置问题。里面也配了跨域支持,但是jsoncollback只支持Get请求,Post请求是解决不了,所以这里把真正的WCF跨域问题贴出来。话不多说,直接帖配置文件。&lt;system.webServer&gt; &lt;httpProtocol&gt; &lt;customHeaders&gt; &lt;add name="...

qq_28139345的博客 617

Pycharm环境配置完整教程

本文主要介绍python解释器安装、Pycharm环境配置以及运行第一个程序的零基础的教程,即使是python小白也能正确配置相应的python学习环境哦!

悠眠小虫的博客 2万+

从FP16到FP8:我是如何让Stable Diffusion 3.5提速40%而不丢画质的

本文分享了StableDiffusion模型优化的实战经验。通过FP8精度转换、分层处理敏感模块,实现显存占用降低35%、推理速度提升40%。文章详细介绍了提升画质的五大技巧、本地/云端/移动端部署方案,以及二次元模型定制等垂直领域应用。同时总结了硬件兼容性、数据质量等七大常见陷阱,并强调持续监控和伦理考量。作者指出未来应关注MoE架构、注意力机制优化等方向,认为技术优化是持续追求性能与质量平衡的过程。

达则兼济天下 1187

WCF使用小结:(1)WCF接收HTTP POST数据的处理方法

在WCF 4.0中,为我们创建Restful API有了更好的支持。通过定义UriTemplate,WebInvoke就可以快速开发API接口。 这里我记录一下HTTP POST数据时要如何接收POST过来的数据。 1,方法一:Stream inputStream输入流方法(注意看方法 例如我的代码 [OperationContract] [WebInvoke...

tomisaboy的专栏 3820

等保: Postgresql配置ssl链接

等保: postgresql配置ssl链接完整方案和避坑指南

weixin_43557605的博客 4382

Ajax调用WCF报405错误

环境:jquery1.8.1+Wcf(IIS托管) 错误:405错误(方法不被允许) 原因:ajax跨域调用错误 解决办法: 1.在发布WCF上面允许crossDomainScriptAccessEnabled &lt;system.serviceModel&gt; &lt;behaviors&gt; &lt;endpointBehav...

weixin_33725515的博客 296

RFID射频识别技术介绍及简单应用

简单介绍RFID技术及其简单应用,后附简单门禁制作方法和代码

来者皆是客。 1万+

2026华为OD机考双机位C卷++ 双机位B卷 + 双机位A卷 + 2025C/B/A卷+ 往年真题 - 题库目录分值说明 + 考点说明+在线OJ

2025华为OD机考双机位C卷++ 双机位B卷 + 双机位A卷 + 2025C/B/A卷+ 往年真题 - 题库目录分值说明 + 考点说明+在线OJ

算法大师! 5万+

WCF中神秘的“8731“端口和“Design_Time_Addresses”

WCF中神秘的“8731"端口和“Design_Time_Addresses” 如果使用Visual Studio 2008 SP1开发WCF应用程序时,会发现当使用Visual Studio 2008的新建“WCF服务”模板向项目中添加WCF服务时,Visual Studio 2008总是使用wsHttpBinding绑定,并且使用以下格式的地址:                

bitfan(数字世界一凡人)的专栏 5702

QProgressBar:常用接口、样式表及自定义进度条实现

在Qt开发中,QProgressBar 是一个非常常用的控件,用于显示任务的进度。无论是文件下载、数据处理还是其他耗时操作,QProgressBar 都能直观地展示当前进度。本文将详细介绍QProgressBar 的使用方法,包括常用接口、样式表设置,并额外补充一个自定义进度条的C++实现。

u011186532的专栏 1012

WCF中神秘的“8731"端口和“Design_Time_Addresses”

如果使用Visual Studio 2008 SP1开发WCF应用程序时,会发现当使用Visual Studio 2008的新建“WCF服务”模板向项目中添加WCF服务时,Visual Studio 2008总是使用wsHttpBinding绑定,并且使用以下格式的地址: <host> <baseAddresses> <add...

weixin_30647065的博客 92

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

(转)WCF中神秘的“8733"端口和“Design_Time_Addresses”

转自:http://blog.youkuaiyun.com/bitfan/article/details/4193319 如果使用Visual Studio 2008 SP1开发WCF应用程序时,会发现当使用Visual Studio 2008的新建“WCF服务”模板向项目中添加WCF服务时,Visual Studio 2008总是使用wsHttpBinding绑定,并且使用以下格式的地址: ...

weixin_30487201的博客 258

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

linux 怎么看当前时间,linux 查看系统当前时间,修改时间

WCF入门教程(三)定义服务协定--属性标签WCF入门教程(三)定义服务协定--属性标签 属性标签,成为定义协议的主要方式.先将最简单的标签进行简单介绍,以了解他们的功能以及使用规则. 服务协定标识,标识哪些接口是服务协定,哪些操作时服务协定的 ...Leetcode 114&comma; Flatten Binary Tree to Linked List根据提示,本题等价于pre or...

weixin_36339157的博客 137

.net读取服务器文件是否存在,使用C#在Linux服务器中检查文件是否已使用.Net Core更新 - c#...

我正在做一个.Net Core应用程序,需要检查某些文件最近是否被替换过。基本上检查文件是否被较新版本替换(它可能是同一文件或具有相同的大小,但是由于某种原因被替换了)。我今天在2020年3月4日下午12:32将文件上传到服务器,然后尝试使用File.GetLastWriteTime,但它给了我2019年2月27日,这可能是文件最初创建时或将文件下载到PC时的时间。我尝试了File.GetLast...

weixin_42664597的博客 663

一个好的MIS系统应该考虑哪些内容

  如果真正用心来做一套好的MIS系统应该考虑哪些内容呢?  大概想了一下,以后再慢慢补充:  一、界面友好    ⑴界面是可以灵活定制的。    实现难度:中级    做好基础类窗口,在窗口初始化的时候进行读取定制方案,一种方式可以把元素打包成DLL或者其他文件,第二种方式是放在用户的程序目录下。    在C#中,通过WCF或者WebService来传递界面数据也是个不错的...

weixin_34242658的博客 187

自行实现高性能MVC

  wcf虽然功能多、扩展性强但是也面临配置忒多,而且restful的功能相当怪异,并且目前没法移植。asp.net core虽然支持webapi,但是功能也相对繁多、配置复杂。就没有一个能让码农们安安心心的写webapi,无需考虑性能、配置、甚至根据问题场景自行设计、改造等问题的方案么?   当然不是,特别是在dnc2.0已经相当强大的此时,完全可以自行设计一套简洁、高效的webapi框架!说...

weixin_30871293的博客 122

明明引用了dll,但是还是找不到命名空间

遇到一个怪异的问题,明明用了dll,但是死活找不到命名空间,死活无法调用引用的类。 后来发现原因是引用的dll是.net framework 4.,而当前项目是.net framework 4 Client Profile。 导致不兼容所致。 .NET Framework Client Profile .NET Framework 4 Clien...

weixin_34007879的博客 1090

使用 .NET 实现 Ajax 长连接 (Part 1 - Comet Web Service)

Ajax的长连接,或者有些人所说的Comet,就是指以XMLHttpRequest的方式连接服务器,连接后服务器并非即时写入相应并返回。服务器会保持连接并等待一个需要通知客户端的事件,该事件发生后马上将数据写入响应,这时候客户端就以相当“实时”的方式接收到事件通知。具体的通信模型,请参考这篇文章:《Comet:基于 HTTP 长连接的“服务器推”技术》,里面已经说得非常详细了,我就...

deform0032的博客 127
上一篇: 加载和卸载自己开发的Windows服务
下一篇: 时间过滤和合并
mole
博客等级 码龄26年 75粉丝 166原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值