WCF 的学习过程
之前没有接触过WCF,这两天学习中。把遇到的问题和解决办法记下来。
遇到的问题:
(1).HTTP 错误 404.17 - Not Found
请求的内容似乎是脚本,因而将无法由静态文件处理程序来处理
(2).HTTP 错误 500.21 - Internal Server Error
处理程序“svc-Integrated”在其模块列表中有一个错误模块“ManagedPipelineHandler”
(3).“/”应用程序中的服务器错误。
在主机(“IntegratedWindowsAuthentication”)上配置的身份验证方案不允许在绑定“BasicHttpBinding”(“Anonymous”)上配置的方案。请确保 SecurityMode 设置为 Transport 或 TransportCredentialOnly。此外,还可以通过以下方式解决此问题: 通过 IIS 管理工具更改此应用程序的身份验证方案,通过应用程序配置文件中 <serviceAuthenticationManager> 元素处的 ServiceHost.Authentication.AuthenticationSchemes 属性更改身份验证方案,通过更新绑定上的 ClientCredentialType 属性或通过调整 HttpTransportBindingElement 上的 AuthenticationScheme 属性。
(5).在使用WCF 的过程中遇到:
已超过传入消息(65536)的最大消息大小配额。若要增加配额,请使用相应绑定元素上的 MaxReceivedMessageSize 属性。
1.做个小入门的程序(博客园的文章,不废话,直接动手那个,好像那个服务的方法是ShowName()),以下是开发过程。
2.解决办法:
以管理员身份运行CMD,输入如下命令即可。其中命令最后的“modules”为页面中显示错误红色字段的节点名称。
然后是:(刚安装的系统,没有开启IIS 服务)没有注册好IIS 中aspnet的这个东西,注册下。
之后:是权限问题,把对应的权限修改,指定某个用户。
最后:成功显示WCF服务
第5个问题的解答方案:
1.
在WCFTestClient里能看到一个ConfigFile,---》右键---在SvcConfigEditor里编辑,然后找到绑定的设置就可以了。
这个不能直接在WCFTestClient设置,双击打开的文件默认是只读的。这里也将MaxReceivedMessageSize等值设置为:2147483647。在Help工具栏,设置无须总是重新加载配置文件。
2.在web.config中配置,添加红色部分代码,或者设置其值为:
<wsHttpBinding>
<binding name="MaxMessage" closeTimeout="00:01:00" openTimeout="00:01:00"
receiveTimeout="00:10:00" sendTimeout="00:10:00" maxBufferPoolSize="2147483647"
maxReceivedMessageSize="2147483647">
<readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647"
maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" />
<security mode="Message">
<transport clientCredentialType="Windows" />
</security>
</binding>
<!--v-shunhu:set WSHttpBinding_INewsScrapingService maxReceiveMessageSize-->
<binding name="WSHttpBinding_INewsScrapingService"
maxReceivedMessageSize="2147483647"
maxBufferPoolSize="2147483647">
<readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647"
maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" />
</binding>
</wsHttpBinding>
---------------分割线---------------
<serviceBehaviors>
<behavior name="NewsScrapingServiceBehavior">
<!-- To avoid disclosing metadata information, set the values below to false before deployment -->
<serviceThrottling maxConcurrentCalls="200" maxConcurrentInstances="200" maxConcurrentSessions="200" />
<serviceMetadata httpGetEnabled="true" httpsGetEnabled="true"/>
<!-- To receive exception details in faults for debugging purposes, set the value below to true. Set to false before deployment to avoid disclosing exception information -->
<serviceDebug includeExceptionDetailInFaults="true"/>
<!--v-shunhu:modify value '9000000' to '2147483647'-->
<dataContractSerializer maxItemsInObjectGraph="2147483647" />
</behavior>
</serviceBehaviors>
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· [AI/GPT/综述] AI Agent的设计模式综述
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!