我在框架4上有一個WCF服務,在內部網絡中工作良好。外部我可以看到目錄瀏覽,因爲在web.config中啓用,但是一旦我點擊svc文件就會在'/'Application'中拋出404「服務器錯誤。還有一個DMZ反向代理,我相信這是我的問題。我檢查了IIS-7日誌,並且404錯誤沒有被記錄,只有200 OK從內部訪問被記錄。 IIS有很多服務和網站正在運行,但這是我公司第一次嘗試使用REST服務的WCF。幾天來,我一直在尋找答案,只找到不適合我的項目的解決方案。以下是我的配置文件。預先感謝您的幫助。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