无法从web访问WCF

本文关键字:访问 WCF web | 更新日期: 2023-09-27 18:15:54

我已经导入了一个wcf服务,它可以从本地主机访问,但是当我使用我的公共ip地址时,我无法到达它。

这是我的网页内容。配置文件。

<?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>

我有一个控制台应用程序,能够与它通信,但只能与本地主机。

这就是我如何能够得到它。它在端口14946上运行,并将该端口转发到运行该服务的计算机。它被托管在IIS上。

http://localhost: 14946/HelloWorldService.svc吗?singleWsd

如果我使用:{publicIP}:14946/HelloWorldService.svc?singleWsd我得到一个500内部错误,这意味着这是一个配置问题,但我似乎无法确定问题是什么。

编辑:我现在收到这个错误。

类型为"WcfService1"。在ServiceHost指令中作为Service属性值提供的HelloWorldService找不到。我现在可以通过网络访问它,但现在收到此错误。为了修复之前的错误,我必须:去添加删除功能2。)扩展MS . net框架3)打开WCF的HTTP和非HTTP激活

谢谢,

无法从web访问WCF

如果您正确地将其托管在IIS中,您可以直接删除端点中的端口并直接访问它,例如:( add virtual application if necessary )

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

它在您的本地主机上工作,因为它是在IIS Express的调试模式下托管的,并自动分配了该端口。