2010-06-02 4 views
11

이 오류로 인해 다음 번에 아무 것도없는 WCF 서비스가 있습니다. 그것은 벽 위로 나를 몰고있다. 여기에 내가 가진 것이있다."원격 서버에서 오류를 반환했습니다 : (403) HTTPS에서 WCF 서비스와 함께 금지 됨"

값이 "test"인 문자열을 반환하는 매우 간단한 WCF 서비스입니다.

서비스를 사용하고 문자열의 값을 레이블에 넣는 매우 간단한 웹 앱입니다.

SSL 인증서를 사용하여 Windows 2003에서 IIS 6을 실행하는 웹 서버.

동일한 서버에서 작동하는 다른 WCF 서비스. 이 HTTPS 내가 VS에서 디버그 모드에서 웹 응용 프로그램을 실행 위치

의에

나는 WCF 서비스를 게시하고 완벽하게 작동합니다.

:

나는 그것에 웹 응용 프로그램은 WCF 서비스가

내가 얻을 같은 SSL 인증서 아래에있는 동일한 서버에 위치, "(403) 금지 원격 서버에서 오류를 반환"HTTPS의 게시 IIS의 모든 설정과 WCF 및 웹 응용 프로그램을 거의 변경하지 않았습니다. 나는 작동하는 WCF 서비스의 설정을 비교했으며 모든 것이 동일합니다.

아래는 WCF 서비스 및 웹 응용 프로그램의 Web.config의 설정은 다음과 같습니다

그것은 문제가 웹 애플리케이션과 관련이 나타납니다 그러나 나는 밖으로 아이디어입니다. 어떤 아이디어 :

WCF 서비스 :

<system.serviceModel> 
<bindings> 

<client /> 

<services> 
    <service behaviorConfiguration="Ucf.Smtp.Wcf.SmtpServiceBehavior" name="Ucf.Smtp.Wcf.SmtpService"> 
    <host> 
     <baseAddresses> 
     <add baseAddress="https://test.net.ucf.edu/webservices/Smtp/" /> 
     </baseAddresses> 
    </host> 
    <endpoint address="" binding="wsHttpBinding" contract="Ucf.Smtp.Wcf.ISmtpService" bindingConfiguration="SSLBinding"> 
     <identity> 
     <dns value="localhost"/> 
     </identity> 
    </endpoint> 
    <endpoint address="mex" binding="mexHttpsBinding" contract="IMetadataExchange"/> 
    </service> 
</services> 

<behaviors> 
    <serviceBehaviors> 
    <behavior name="Ucf.Smtp.Wcf.SmtpServiceBehavior"> 
     <serviceMetadata httpsGetEnabled="true" /> 
     <serviceDebug includeExceptionDetailInFaults="true" httpsHelpPageEnabled="True"/> 
    </behavior> 
    </serviceBehaviors> 
</behaviors> 

웹 응용 프로그램 :

사용자 계정이있는 경우
<system.serviceModel> 
    <bindings><wsHttpBinding> 
<binding name="WSHttpBinding_ISmtpService" closeTimeout="00:01:00" 
openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00" 
bypassProxyOnLocal="false" transactionFlow="false" hostNameComparisonMode="StrongWildcard" 
maxBufferPoolSize="524288" maxReceivedMessageSize="65536" messageEncoding="Text" 
textEncoding="utf-8" useDefaultWebProxy="true" allowCookies="false"> 
<readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384" 
    maxBytesPerRead="4096" maxNameTableCharCount="16384" /> 
<reliableSession ordered="true" inactivityTimeout="00:10:00" 
    enabled="false" /> 
<security mode="Transport"> 
    <transport clientCredentialType="None" proxyCredentialType="None" 
    realm="" /> 
    <message clientCredentialType="Windows" negotiateServiceCredential="true" 
    establishSecurityContext="true" /> 
</security> 
</binding> 

<client> 


<endpoint address="https://net228.net.ucf.edu/webservices/smtp/SmtpService.svc" 
binding="wsHttpBinding" bindingConfiguration="WSHttpBinding_ISmtpService" 
contract="SmtpService.ISmtpService" name="WSHttpBinding_ISmtpService"> 
<identity> 
<dns value="localhost" /> 
</identity> 

</client> 
</system.serviceModel> 

답변

4

.나는이 사실을 알아 내려고 벽에 머리를 때린 다른 모든 사람들에게 도움이되기를 바랍니다. 우리는 마침내 네트워크 관리자를 참여시키고이를 해결했습니다.

여기에 시나리오 및 솔루션의 : 우리는 프로덕션 서버가

- 모든 것이 잘 작동합니다. 테스트 서버가 있습니다. 403 금지 된 오류가 표시됩니다. 로컬 디버깅이 정상적으로 작동합니다.

모든 설정은 동일하거나 그렇게 생각했습니다.

한 가지 설정이 잘못되었습니다. 디렉터리 보안 탭에서 웹 서비스의 가상 디렉터리 속성에있는 IIS에서 두 번째 편집 단추는 IP 제한 사항입니다. 우리는 테스트 서버의 IP를 포함해야하는 목록을 제외한 모든 IP에 대한 액세스를 거부하도록 설정되었습니다. 테스트 웹 서버의 IP에 권한이 부여되지 않았습니다. 권한이없는 이유는 최근에 프로덕션 가상 서버에서 복제되었고이 설정이 테스트 가상 서버를 추가하기 위해 조정되지 않았기 때문입니다.

0

당신이 메시지와 함께 윈도우 ID를 전달하는 나를 밖으로 점프 유일한 것은,이 권한 문제가 발생할 수 passed는 WCF 서비스에 액세스 할 수 없습니다. 잠재적으로 웹 응용 프로그램에서 명의 도용이 필요합니까?

0

기본적으로 WCF 바인딩은 익명 (인증 안 함) 액세스를 허용하지 않습니다. 당신은 그것을 할 수 있도록 modify the bindings 필요 :이 문제에 시간과 시간을 보낸 이후 내 자신의 질문에 대답하기 위하여려고하고있다

<wsHttpBinding> 
    <binding ...> 
     <security mode ="None"/> 
    </binding> 
    </wsHttpBinding> 
1

필자의 경우 다른 컴퓨터에서 소스 코드를 복사했지만 여기에 가상 디렉터리가 생성되지 않았습니다. 일단 내가 프로젝트 속성에 가서 잘 작동 가상 디렉터리를 만들었습니다.

0

필자의 경우 내 apppool 사용자는 어떤 이유에서든 'C : \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ Temporary ASP.NET Files'에 대한 읽기/쓰기 권한이 없습니다.

0

compilation debug="true"이 설정되어 있는지 확인하십시오.

관련 문제