У меня есть служба WCF на фреймворке 4, хорошо работающая внутри внутренней сети. Внешне я вижу просмотр каталогов, потому что включен в web.config, но как только я нажимаю на файл svc, вы бросаете 404 «Ошибка сервера в '/' Application». Существует также обратный прокси-сервер DMZ, и я уверен, что это моя проблема. Я проверил журналы IIS-7, и ошибка 404 не регистрируется, только 200 OK от внутреннего доступа регистрируются. IIS имеет множество сервисов и сайтов, но это первый раз, когда моя компания пытается использовать WCF с помощью службы REST. В течение нескольких дней я искал ответы только на поиск решений, которые не работают над моим проектом. Ниже приведен файл конфигурации. Заранее благодарю за любую помощь.Служба WCF работает внутренне, но не внешне
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.net>
<defaultProxy useDefaultCredentials="true"></defaultProxy>
</system.net>
<system.diagnostics>
<sources>
<source propagateActivity="true" name="System.ServiceModel" switchValue="Warning,ActivityTracing">
<listeners>
<add type="System.Diagnostics.DefaultTraceListener" name="Default">
<filter type="" />
</add>
<add name="ServiceModelTraceListener">
<filter type="" />
</add>
</listeners>
</source>
</sources>
<sharedListeners>
<add initializeData="X:\RestService\DrillSvc\web_tracelog.svclog" type="System.Diagnostics.XmlWriterTraceListener, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" name="ServiceModelTraceListener" traceOutputOptions="Timestamp">
<filter type="" />
</add>
</sharedListeners>
</system.diagnostics>
<appSettings />
<connectionStrings>
<add name="cn" connectionString="Data Source =test ; initial catalog=Drillers; User Id=userid; Password=password" providerName="System.Data.SqlClient" />
</connectionStrings>
<system.web>
<compilation debug="true" targetFramework="4.0">
<assemblies>
<add assembly="System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364123" />
</assemblies>
</compilation>
<authentication mode="Windows" />
<pages controlRenderingCompatibilityVersion="3.5" clientIDMode="AutoID" />
<identity impersonate="false" />
</system.web>
<system.webServer>
<modules runAllManagedModulesForAllRequests="true">
<!--<remove name="webDAVModule"/>-->
</modules>
<directoryBrowse enabled="true" />
</system.webServer>
<system.serviceModel>
<bindings>
<webHttpBinding>
<binding name="WCFwebBinding">
<security mode="None">
<transport clientCredentialType="None" proxyCredentialType="Windows"/>
</security>
</binding>
</webHttpBinding>
</bindings>
<serviceHostingEnvironment multipleSiteBindingsEnabled="true"> </serviceHostingEnvironment>
<services>
<service behaviorConfiguration="DrillServiceBehavior" name="DrillService">
<endpoint address="" behaviorConfiguration="WCFDrillWebBehavior" binding="webHttpBinding" contract="IDrillService">
<identity>
<dns value="mycompany.com" />
</identity>
</endpoint>
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
</service>
</services>
<behaviors>
<endpointBehaviors>
<behavior name="WCFDrillWebBehavior">
<webHttp />
</behavior>
</endpointBehaviors>
<serviceBehaviors>
<behavior name="ServiceBehavior">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="true" />
</behavior>
<behavior name="DrillServiceBehavior">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="true" />
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
</configuration>`
Обновления: Я добавил простой HTML страницу, и она работает от внешней общественности, но файл SVC по-прежнему бросает 404 ошибки не найдена.
Вы хотите сказать, что когда вы нажимаете на ссылку, чтобы просмотреть WSDL на странице справки, она бросает ошибку 404? И вы можете получить доступ к справочной странице извне? –
Привет, Джеймс, когда я нажимаю, чтобы посмотреть сервис svc, и там он перечисляет wsdl, он выдает 404 извне. Внутри я могу открыть его и использовать службу. – Deleted