无法通过网络

时间:2015-10-05 02:45:51

标签: c# wcf

我已经导入了一个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激活

谢谢,

1 个答案:

答案 0 :(得分:0)

如果您在IIS中正确托管它,您只需删除端点中的端口并直接访问它,如下所示:( add virtual application if necessary )

http://<public ip>/HelloWorldService.svc?singleWsd

它在您的localhost中工作,因为它在调试模式下托管在IIS Express中并自动分配该端口。