wcf 发布问题(iis 宿主)

summercat 2011-06-09 10:21:56
WCF部署到服务器上,在客户端浏览器里访问如下地址
http://192.x.x.x/mobilephone/service.svc
可以正常访问,页面返回
svcutil.exe http://计算机名/MobilePhone/Service.svc?wsdl

在客户端程序调用服务的时候(添加服务引用,输入
http://192.x.x.x/mobilephone/service.svc 地址,点击【前往
】,会提示 无法远程访问 计算机名

请问如何解决,谢谢

----

Service.svc
<%@ ServiceHost language="c#" Debug="true" Service="IfaceService.ClassService" %>

----
web.config

<system.serviceModel>
<services>
<service behaviorConfiguration="ServiceBehavior" name="IfaceService.ClassService">
<endpoint address="basic" binding="basicHttpBinding" contract="IfaceService.InterfaceService">
<identity>
<dns value="localhost" />
</identity>
</endpoint>
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="ServiceBehavior">
<!-- 为避免泄漏元数据信息,请在部署前将以下值设置为 false 并删除上面的元数据终结点 -->
<serviceMetadata httpGetEnabled="true"/>
<!-- 要接收故障异常详细信息以进行调试,请将以下值设置为 true。在部署前设置为 false 以避免泄漏异常信息-->
<serviceDebug includeExceptionDetailInFaults="false"/>
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
</configuration>


----
...全文
693 22 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
xzyuan 2013-07-23
  • 打赏
  • 举报
回复
请参照:http://blog.sina.com.cn/s/blog_752ca76a010184dy.html 谢谢
jhdxhj 2013-03-14
  • 打赏
  • 举报
回复
引用 19 楼 weikai20007 的回复:
服务消费者的配置文件就可以是: <?xml version="1.0" encoding="utf-8" ?> <configuration> <system.serviceModel> <bindings> <wsHttpBinding> <binding name="WSHtt……
+1
weikai20007 2013-03-14
  • 打赏
  • 举报
回复
服务消费者的配置文件就可以是: <?xml version="1.0" encoding="utf-8" ?> <configuration> <system.serviceModel> <bindings> <wsHttpBinding> <binding name="WSHttpBinding_IService1" /> </wsHttpBinding> </bindings> <client> <endpoint address="http://127.0.0.1:9995/CalculatorService.svc" binding="wsHttpBinding" contract="Contract.ICalcuator" name="calcutorService" /> </client> </system.serviceModel> </configuration>
weikai20007 2013-03-14
  • 打赏
  • 举报
回复
如果你用的IIS7就要注意了,我用IIS7也出现逆列举的情况,我从5楼的步骤得到灵感:解决方法是: 在web.config文件中的<configuration>节点中加入如下: <!-- 在 Internet 信息服务 7.0 下运行 ASP.NET AJAX 时 system.webServer 节 是必需的。而对于早期版本的 IIS,此节并不是必需的。 --> <system.webServer> <validation validateIntegratedModeConfiguration="false"/> <modules> <remove name="ScriptModule" /> <add name="ScriptModule" preCondition="managedHandler" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> </modules> <handlers> <remove name="WebServiceHandlerFactory-Integrated"/> <remove name="ScriptHandlerFactory" /> <remove name="ScriptHandlerFactoryAppServices" /> <remove name="ScriptResource" /> <add name="ScriptHandlerFactory" verb="*" path="*.asmx" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> <add name="ScriptHandlerFactoryAppServices" verb="*" path="*_AppService.axd" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> <add name="ScriptResource" preCondition="integratedMode" verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> </handlers> </system.webServer>
a569673493 2013-03-14
  • 打赏
  • 举报
回复
hosts机器名和IP映射你为嘛在服务器添加呢?在客户端添加。。。
gavinluo 2012-11-09
  • 打赏
  • 举报
回复
太恶性了,我也是这个问题,用毛线机器名。配置也不会配,搜了半天也没答案。发泄一下
zwj_aaron 2012-01-06
  • 打赏
  • 举报
回复
WCF发布目录的文件夹权限设置:一要Web共享,二要给ASP.NET用户(IUSER)足够的权限
summercat 2011-06-09
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 fangxinggood 的回复:]
等等看走眼了,

lz在IIS上是以WebApplication发布的吗?还是以Site发布
[/Quote]


发布的时候在IIS 建立的WebApplication
机器人 2011-06-09
  • 打赏
  • 举报
回复
等等看走眼了,

lz在IIS上是以WebApplication发布的吗?还是以Site发布
机器人 2011-06-09
  • 打赏
  • 举报
回复
endpoint 少东西哦。

我就纳闷了,默认的WCF Service Application模板默认的配置,为啥删来删去的?
summercat 2011-06-09
  • 打赏
  • 举报
回复
。。。招兵买马都回来了,还没人回复,已向三个版主求助了,这人呢?
flyerwing 2011-06-09
  • 打赏
  • 举报
回复
svcutil.exe http://计算机名/MobilePhone/Service.svc?wsdl

在VS命令行中输入命令,生成文件完成后根据提示将代理生成对象拷贝到CLIENT项目中然后创建对象然后调用就好了.
好象也可以宿主代理服务,就是把服务和运行服务分开,客户端只与运行服务的宿主联系.
不懂,用不上也没学.
summercat 2011-06-09
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 fangxinggood 的回复:]
这个倒是可以手动修改的,你可以到客户端app.config里,把机器名改为IP。
[/Quote]

按你说的手动修改了,但是新的问题又出现了,

调用方法的时候,提示

调用方未由服务进行认证

我暂时改由webservice实现,这个问题有时间在研究,暂不结贴,到时候研究的时候再继续~~~
机器人 2011-06-09
  • 打赏
  • 举报
回复
这个倒是可以手动修改的,你可以到客户端app.config里,把机器名改为IP。

summercat 2011-06-09
  • 打赏
  • 举报
回复
有了一点变化,我在服务器 web.config 里增加一行,就是默认的那个节点配置


<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />


然后客户端程序添加服务引用的时候,点击前往,会显示我的服务。。。

IfaceService.ClassService,添加以后,调用具体方法的时候,

SRF1.InterfaceServiceClient tc=new SRF1.InterfaceServiceClient();

tc.save(..具体参数);

跟踪会提示


没有终结点在侦听可以接受消息的 http://newoem/Phone/Service.svc。这通常是由于不正确的地址或者 SOAP 操作导致的


添加应用可以正常了,但是具体调用方法的时候还是会报错,还是不识别服务器计算机名,为什么会显示计算机名而不是IP呢,头疼。。。

se365363 2011-06-09
  • 打赏
  • 举报
回复
路过 不会
summercat 2011-06-09
  • 打赏
  • 举报
回复
多谢,我也在找,我在服务器的 hosts文件里 添加 服务器计算机名和 IP 对应关系,但是问题依旧
summercat 2011-06-09
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 fangxinggood 的回复:]
直接在浏览器里:http://192.x.x.x/mobilephone/service.svc?wsdl 呢?

你这个问题感觉是客户端 Hosts 文件的映射问题。可以搜搜看。
[/Quote]

会显示 XML 文件,但是XML文件最后

-<wsdl:service name="ClassService">-<wsdl:port name="BasicHttpBinding_InterfaceService" binding="tns:BasicHttpBinding_InterfaceService"><soap:address location="http://newoem/mobilephone/Service.svc/basic"/></wsdl:port></wsdl:service>


newoem 是服务器计算机名,如果在项目里直接添加引用

http://192.x.x.x/mobilephone/service.svc?wsdl

点击前往 也是相同的错误~~
机器人 2011-06-09
  • 打赏
  • 举报
回复
直接在浏览器里:http://192.x.x.x/mobilephone/service.svc?wsdl 呢?

你这个问题感觉是客户端 Hosts 文件的映射问题。可以搜搜看。
summercat 2011-06-09
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 fangxinggood 的回复:]
引用楼主 summercat 的回复:
WCF部署到服务器上,在客户端浏览器里访问如下地址
http://192.x.x.x/mobilephone/service.svc
可以正常访问,页面返回
svcutil.exe http://计算机名/MobilePhone/Service.svc?wsdl

再确认下:
现在是用机器名引用不了呢?还是用IP引用不了?
[/Quote]


正常来讲我是希望在客户度通过IP的,在我的客户端程序添加服务引用

http://192.x.x.x/mobilephone/service.svc

点击 前往,就提示

无法远程访问 计算机名,

就好像点击前往以后,真正的服务地址解析成了服务器的计算机名,这样客户端肯定不能访问了,

如果直接在IE里访问

http://192.x.x.x/mobilephone/service.svc

页面返回
svcutil.exe http://计算机名/MobilePhone/Service.svc?wsdl

再点击

http://计算机名/MobilePhone/Service.svc?wsdl

也是访问不了~~

加载更多回复(2)

111,094

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧