2015-10-05 3 views
0

Я импортировал услугу wcf и доступен с локального хоста, но когда я использую свой общедоступный IP-адрес, я не могу его достать.WCF недоступен из сети

Это содержимое моего файла 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, которая означает, что его проблема с настройкой, но я не могу точно определить, в чем проблема?.

EDIT: Я получаю эту ошибку.

Тип «WcfService1.HelloWorldService», предоставляемый как значение атрибута Service в директиве ServiceHost, не может быть найден. Теперь я могу перейти к нему через Интернет, но теперь получаю эту ошибку. Для того, чтобы исправить предыдущую ошибку, я должен был: 1.) Перейти добавить удалить компоненты 2.) Развернуть MS .NET Framework 3.) Переплет как HTTP и Non-HTTP активации для WCF

Спасибо,

ответ

0

Если вы правильно принимали его в IIS, вы можете просто удалить порт в конечной точке и получить доступ к нему напрямую, что-то вроде этого: (add virtual application if necessary)

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

он работает в вашем локальном хосте, потому что это было организовано в IIS Express при режиме отладки и автоматически назначил этот порт.

+0

Я пробовал выше, но до сих пор не могу связаться с ним из Интернета. Это должна быть проблема конфигурации, но я не могу точно ее определить. – RobertC

+0

У вас есть виртуальный каталог в IIS? Как вы разместили свою службу в IIS? – jtabuloc

+0

Я только что щелкнул правой кнопкой мыши и добавил сайт. Для привязок я просто привязал его к частным IP-машинам, и у меня есть порт, перенаправленный этим портом на этот компьютер. – RobertC

Смежные вопросы