WCF-IIS-PDA

PDA调用WCF

一 IIS托管WCF

项目从开始是用IIS托管的WCF,但一直出错,到最后也没有搞定,希望哪位大神知道的话可以指点。

错误如下:

There was no endpoint listening at http://mypcname/Service1.svc/basic that could accept the message. This is often caused by an incorrect address or SOAP action. See InnerException, if present, for more details.

The inner exception: Could not establish connection to network.

虽然项目没有成功,但还是学到了一些东西,总结以备以后之用。

(1)在IIS上部署WCF

具体的发布流程网上很多,可以参考这篇:http://www.cnblogs.com/finehappy/archive/2009/12/22/1629483.html。但发布完之后可能出现很多问题:

Question 1:

在VS中,添加服务引用,地址输入http://ip/Service.svc,点击前往,提示错误,内容如下:

URI http://ip/Service.svc 处的文档未被识别为已知的文档类型。
来自各已知类型的错误信息可能有助于修复该问题:
- 来自“XML 架构”的报告是“无法识别此文档格式(内容类型为“text/html; charset=UTF-8”)。”。
- 来自“http://ip/Service.svc”的报告是“无法识别此文档格式(内容类型为“text/html; charset=UTF-8”)。”。
- 来自“DISCO 文档”的报告是“下载“http://域名/Service.svc?disco”时出错。”。
- 未能解析此远程名称: ‘域名‘
- 来自“WSDL 文档”的报告是“无法识别此文档格式(内容类型为“text/html; charset=UTF-8”)。”。
元数据包含无法解析的引用:“http://域名/Service.svc”。
服务 http://ip/Service.svc 不支持内容类型 application/soap+xml; charset=utf-8。客户端和服务绑定可能不匹配。
远程服务器返回错误: (415) Cannot process the message because the content type ‘application/soap+xml; charset=utf-8‘ was not the expected type ‘text/xml; charset=utf-8‘.。
如果该服务已在当前解决方案中定义,请尝试生成该解决方案,然后再次添加服务引用.

解决方案:

修改wcf的配置文件,添加红色部分部门,或者通过wcf配置文件编辑器,添加useRequestHeadersForMetadataAddress配置

<behaviors>
      <serviceBehaviors>
        <behavior name="">
          <serviceMetadata httpGetEnabled="true" />
          <serviceDebug includeExceptionDetailInFaults="true" />
          <useRequestHeadersForMetadataAddress>
            <defaultPorts>
              <add scheme="http" port="8002" />
              <add scheme="https" port="8002" />
            </defaultPorts>
          </useRequestHeadersForMetadataAddress>
        </behavior>
      </serviceBehaviors>
    </behaviors>

Question 2:.net程序集过时问题

错误代码:

未能加载文件或程序集“xxx”或它的某一个依赖项。生成此程序集的运行时比当前加载的运行时新,无法加载此程序集  

解决方案:

主要原因是:引用的项目 .net 版本与启动的框架不同

主要原因是:引用的项目 .net 版本与启动的框架不同

windows xp

我的电脑->右键管理->Internet信息服务->默认网站->右键属性->ASP.NET->> 更改相应的asp.net版本即可

windows 7

我的电脑->右键管理->Internet信息服务(IIS)管理器->双击打开->单击应用程序池->双击要修改的网站->将.NET Framework 版本修改为相对应的版本即可

二 其他host wcf 平台

1.启动服务端发布服务

这里为了简单,我使用console程序进行发布。最关键的还是Uri和binding,如果想在PDA上调用wcf服务,那么binding必须采用BasicHttpBinding,这点必须注意。

Uri baseUri = new Uri("http://localhost:8080/wcfService");

using (ServiceHost wcfServiceHost = new ServiceHost(typeof(Service.WcfServcie), baseUri))
            {
                BasicHttpBinding binding = new BasicHttpBinding();

wcfServiceHost.AddServiceEndpoint(typeof(IWcfServcie), binding, string.Empty);

ServiceMetadataBehavior behavior = wcfServiceHost.Description.Behaviors.Find<ServiceMetadataBehavior>();

if (behavior == null)
                {
                    behavior = new ServiceMetadataBehavior();
                    behavior.HttpGetEnabled = true;
                    behavior.HttpGetUrl = baseUri;
                    wcfServiceHost.Description.Behaviors.Add(behavior);
                }
                else
                {
                    behavior.HttpGetEnabled = true;
                    behavior.HttpGetUrl = baseUri;
                }

wcfServiceHost.Open();

Console.Read();
            }

2、检查服务是否已发布

编译后启动服务端程序,使用“:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\WcfTestClient.exe”,可以检查服务是否正常发布,当然也可以使用IE。我一般使用WcfTestClient.exe,它可以针对每个方法做测试。

3、创建PDA上WCF服务代理类

可以手动写这部分代码,如果不想自己写代理类,那就下载NETCFv35PowerToys.msi并安装,然后“:\Program Files\Microsoft.NET\SDK\CompactFramework\v3.5\bin”会有一个程序NetCFSvcUtil.exe。通过cmd执行“NetCFSvcUtil.exe http://localhost:8080/wcfService" ,\Program Files\Microsoft.NET\SDK\CompactFramework\v3.5\bin目录下会出现生成的两个文件CFClientBase.cs和WcfServcie.cs,这就是服务的代理类。需要注意的是WcfServcie.cs中”public static System.ServiceModel.EndpointAddress EndpointAddress = new System.ServiceModel.EndpointAddress("http://localhost:8080/wcfService");“,将”localhost“改为服务端的Ip。

在win7上NetCFSvcUtil.exe可能不起作用,总会提示外部工具错误。所以最好用win7之前的OS。不过微软已经发布一个补丁版本。可以搜下。

WCF-IIS-PDA

时间: 2024-08-23 11:51:25

WCF-IIS-PDA的相关文章

wcf iis host 打开exe失败 不能显示界面

最近谷歌没法用了,我的freegate经常性的崩溃 无奈之下,用了必应,貌似也不错 http://stackoverflow.com/questions/8414514/iis7-does-not-start-my-exe-file-by-process-start Edit: After a long journey, me and Nasenbaer have found the following. The possible reasons for IIS to fail run an E

WCF - IIS Hosting

WCF - IIS Hosting Hosting a WCF service in IIS (Internet Information Services) is a step-by-step process. IIS Hosting is illustrated below in detail with the desired coding as well as screenshots to understand the process. 按照如下步骤可以在IIS中托管wcf服务.IIS托管的

zz部署wcf iis

http://blog.csdn.net/jiankunking/article/details/44118911 一. 环境vs2010,WCF应用程序,server 2008 第一步:WCF项目右键点击项目,选择生成部署包,如下图: 第二步:WCF项目上右键,选择:在windows资源管理器中打开文件夹,如下图: 第三步:第二步:在你项目所在的文件目录下找到Package文件夹,这就是我们的部署包所在的地方.在这个package文件夹下面有一个packageTmp. 第四步:在IIS上新建虚

WCF IIS 部署错误处理

做Web接口,原来一直用Web Service的,但是.Net 3.5后,Web Service变成了WCF.代码的编写上,把WebMethod特性改成了OperationContract,然后把方法分拆到契约接口和实现方法.然后在部署上,不再依赖于IIS,但如果使用IIS,部署反倒麻烦了. 将WCF应用程序代码拷贝到IIS目录下,然后打开IIS管理器,将其转换为Application.访问时出现了错误.protocolMapping配置节有问题. 原因在于,WCF是.Net3.5?的东西,我创

WCF IIS 服务器 500 错误 检测到在集成的托管管道模式下不适用的ASP.NET设置的解决方法(转)

我们将ASP.NET程序从IIS6移植到IIS7,可能运行提示以下错误: HTTP 错误 500.23 - Internal Server Error 检测到在集成的托管管道模式下不适用的 ASP.NET 设置. 为什么会出现以上错误? 在IIS7的应用程序池有两种模式,一种是"集成模式",一种是"经典模式". 经典模式 则是我们以前习惯的IIS 6 的方式. 如果使用集成模式,那么对自定义的httpModules 和 httpHandlers 就要修改配置文件,需

WCF IIS上部署服务

一.选择应用程序池:.Net Framework 4.0集成模式 二.IIS Access is denied:程序所在文件夹给予Everyone权限 三.HTTP 错误 500.21 - Internal Server Error:以管理员身份注册IIS(32位或64位), %windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_regiis.exe -i 32位机器: C:\Windows\Microsoft.NET\Framework\v4.0

WCF IIS部署

创建WCFHost应用程序 Iservice.cs 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.ServiceModel; 6 using System.ServiceModel.Description; 7 using System.Drawing; 8 namespace WCFHost 9 { 10 11 12 13

zzIIS站点中部署WCF项目 - C#

WCF IIS配置 IIS站点中部署WCF项目 - C# 分类: WCF2012-12-19 22:30 2929人阅读 评论(0) 收藏 举报 ArtechWCF IIS站点部署 [csharp] view plaincopy .................全书之写印,实系初稿...执笔木坐,草草而止..个中甘苦,只自知之....── 引 Artech .<<WCF全面解析>>................. ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

LiangNa Resum

LiangNa 220 AnShan Street, YangPu, NY 99999 18321657539 18321657539 @163.com OBJECTIVE: Seeking a position to contribute my skills and educational background in the field of Information Technology and Computer Science AREAS OF INTEREST: .NET Technolo

创建WCF服务寄宿到IIS

一.WCF简介: Windows Communication Foundation(WCF)是由微软开发的一系列支持数据通信的应用程序框架,可以翻译为Windows 通讯开发平台. 整合了原有的windows通讯的 .net Remoting,WebService,Socket的机制,并融合有HTTP和FTP的相关技术. 由 .NET Framework 3.0 开始引入. WCF的最终目标是通过进程或不同的系统.通过本地网络或是通过Internet收发客户和服务之间的消息. WCF合并了Web