我已经导入了一个wcf服务,可以从本地主机访问,但是当我使用我的公共IP地址时,我无法访问它。
这是我的web.config文件的内容。
<?xml version="1.0"?>
<configuration>
<system.web>
<compilation debug="true"
targetFramework="4.0" />
</system.web>
<system.serviceModel>
<extensions>
<bindingExtensions>
<add name="clearUsernameBinding"
type="WebServices20.BindingExtenions.ClearUsernameCollectionElement, ClearUsernameBinding" />
</bindingExtensions>
<!-- Add the inspector attribute as a behavior for displaying SOAP XML packets -->
<behaviorExtensions>
<add name="consoleOutputBehavior"
type="WcfService1.ConsoleOutputBehaviorExtensionElement, WcfService1, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
</behaviorExtensions>
</extensions>
<bindings>
<clearUsernameBinding>
<binding name="myClearUsernameBinding"
messageVersion="Soap12" />
</clearUsernameBinding>
</bindings>
<behaviors>
<!-- Add the inspector behavior -->
<endpointBehaviors>
<behavior name="inspectorBehavior">
<consoleOutputBehavior />
</behavior>
</endpointBehaviors>
<serviceBehaviors>
<behavior name="HelloWorldServiceBehavior">
<serviceCredentials>
<userNameAuthentication userNamePasswordValidationMode="Custom"
customUserNamePasswordValidatorType="WcfService1.CustomUserNameValidator, WcfService1" />
</serviceCredentials>
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="false" />
</behavior>
</serviceBehaviors>
</behaviors>
<services>
<service behaviorConfiguration="HelloWorldServiceBehavior"
name="WcfService1.HelloWorldService">
<endpoint address=""
binding="clearUsernameBinding"
bindingConfiguration="myClearUsernameBinding"
contract="WcfService1.IHelloWorldService" />
</service>
</services>
</system.serviceModel>
<system.webServer>
<modules runAllManagedModulesForAllRequests="true" />
</system.webServer>
</configuration>
我有一个控制台应用程序,只能与localhost进行通信。
这就是我能够达到的目的。它在端口14946上运行,并将端口转发到运行该服务的计算机。它托管在IIS上。
http://localhost:14946/HelloWorldService.svc?singleWsd
如果我使用:{publicIP}:14946 / HelloWorldService.svc?singleWsd 我得到一个500内部错误,这意味着它的配置问题,但我似乎无法确定问题是什么。
编辑:我现在收到此错误。
无法找到作为ServiceHost指令中的Service属性值提供的类型“WcfService1.HelloWorldService”。我现在可以通过网络访问它,但现在收到此错误。为了修复以前的错误我不得不:1。)去添加删除功能2.)展开MS .NET Framework 3.)翻转WCF的HTTP和非HTTP激活
谢谢,
答案 0 :(得分:0)
如果您在IIS中正确托管它,您只需删除端点中的端口并直接访问它,如下所示:( add virtual application if necessary )
http://<public ip>/HelloWorldService.svc?singleWsd
它在您的localhost中工作,因为它在调试模式下托管在IIS Express中并自动分配该端口。