웹 서비스에서 데이터를 사용하는 ASP.NET이 C# 웹 응용 프로그램에 있습니다. 대부분의 경우 정상적으로 작동하지만 때로는 더 큰 데이터 세트를 요청할 때 Access is denied 오류 만 반환합니다.웹 서비스에서 일부 요청에 대해서만 "액세스가 거부되었습니다"를 반환합니다.
예를 들어, 특정 날짜 범위 사이에서 일부 문서를 반환하도록 서비스를 호출하면 범위가 충분히 작아서 정상적으로 작동합니다. 그러나 범위를 너무 멀리 확장하면이 오류가 반환됩니다. 이것은 내가 크기 또는 시간 문제라고 믿게 만든다.
그러나 반환하는 모든 문서를 반환하려고하면 대기없이 거의 즉시 Access 오류가 거부됩니다.
저는 서비스와 앱 사이의 문제, 또는 앱 구성 사이에 문제가 있음을 확신합니다.
내가 막연한 이유를 발견하는 데 도움을 줄 수있는 사람이 있습니까? 액세스가 거부되었습니다. 오류가 있습니까? 제가 제공해야 할 정보가 더 있다면 알려주십시오.
편집 : 웹 서비스를 제어합니다.
작은 Windows 양식 앱을 통해 서비스를 호출 해본 결과 아무런 오류도 발견되지 않았습니다.
일부 계약 고객을 통해 웹 서비스를 호출하고 있습니까? 구체적인 내용은 잘 모르겠지만 서비스를 가리키는 서비스 참조가 있고 클라이언트를 선언하고 그 안에 메서드를 사용할 수 있습니다.
브라우저에서 서비스에 액세스 할 수 있습니다.
기타 질문에 대해서는 아직 확실하지 않습니다. 나는 더 자세히 살펴볼 것이다.
편집 2 : 다음은 클라이언트에 대한 설정입니다 :
<?xml version="1.0"?>
<configuration>
<connectionStrings>
//omitted
</connectionStrings>
<system.web>
<httpRuntime executionTimeout="300" maxRequestLength="51200" />
<pages theme="Theme1" />
<compilation debug="true" targetFramework="4.0">
<assemblies>
//omitted
</assemblies>
</compilation>
<authentication mode="Windows" />
<authorization>
<deny users="?" />
</authorization>
<membership>
<providers>
<clear />
<add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider" connectionStringName="ApplicationServices" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" applicationName="/" />
</providers>
</membership>
<profile>
<providers>
<clear />
<add name="AspNetSqlProfileProvider" type="System.Web.Profile.SqlProfileProvider" connectionStringName="ApplicationServices" applicationName="/" />
</providers>
</profile>
<roleManager enabled="false">
<providers>
<clear />
<add name="AspNetSqlRoleProvider" type="System.Web.Security.SqlRoleProvider" connectionStringName="ApplicationServices" applicationName="/" />
<add name="AspNetWindowsTokenRoleProvider" type="System.Web.Security.WindowsTokenRoleProvider" applicationName="/" />
</providers>
</roleManager>
<httpHandlers>
<add path="Telerik.Web.UI.WebResource.axd" type="Telerik.Web.UI.WebResource" verb="*" validate="false" />
</httpHandlers>
</system.web>
<system.webServer>
<modules runAllManagedModulesForAllRequests="true" />
<validation validateIntegratedModeConfiguration="false" />
<handlers>
<add name="Telerik_Web_UI_WebResource_axd" verb="*" preCondition="integratedMode" path="Telerik.Web.UI.WebResource.axd" type="Telerik.Web.UI.WebResource" />
</handlers>
</system.webServer>
<appSettings>
//omitted
</appSettings>
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="DefaultEndpoint" closeTimeout="00:09:00" openTimeout="00:09:00" receiveTimeout="00:10:00" sendTimeout="00:09:00" allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard" maxBufferSize="2147483647" maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647" messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered" useDefaultWebProxy="true">
<readerQuotas maxDepth="32" maxStringContentLength="2147483647" maxArrayLength="16384" maxBytesPerRead="4096" maxNameTableCharCount="16384" />
<security mode="TransportCredentialOnly">
<transport clientCredentialType="Ntlm" proxyCredentialType="None" realm="" />
<message clientCredentialType="UserName" algorithmSuite="Default" />
</security>
</binding>
<binding name="DefaultEndpoint1" closeTimeout="00:09:00" openTimeout="00:09:00" receiveTimeout="00:10:00" sendTimeout="00:09:00" allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard" maxBufferSize="2147483647" maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647" messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered" useDefaultWebProxy="true">
<readerQuotas maxDepth="32" maxStringContentLength="2147483647" maxArrayLength="16384" maxBytesPerRead="4096" maxNameTableCharCount="16384" />
<security mode="TransportCredentialOnly">
<transport clientCredentialType="Ntlm" proxyCredentialType="None" realm="" />
<message clientCredentialType="UserName" algorithmSuite="Default" />
</security>
</binding>
</basicHttpBinding>
</bindings>
<client>
<endpoint address="/*omitted*/ " binding="basicHttpBinding" behaviorConfiguration="ServiceBehavior" bindingConfiguration="DefaultEndpoint" contract="/*omitted*/ " name="DefaultEndpoint" />
<endpoint address="/*omitted*/ " binding="basicHttpBinding" behaviorConfiguration="ServiceBehavior" bindingConfiguration="DefaultEndpoint1" contract="/*omitted*/ " name="DefaultEndpoint1" />
</client>
<behaviors>
<endpointBehaviors>
<behavior name="ServiceBehavior">
<dataContractSerializer maxItemsInObjectGraph="2147483647" />
</behavior>
</endpointBehaviors>
</behaviors>
</system.serviceModel>
</configuration>
을 그리고 여기에 서비스에 대한 설정입니다 : 내가 여기에 몇 가지를 생략 한
<?xml version="1.0"?>
<configuration>
<configSections>
<sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=/*omitted*/" >
<section name="ITSLogger.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=/*omitted*/" requirePermission="false" />
</sectionGroup>
</configSections>
<system.web>
<compilation debug="true" targetFramework="4.0" />
<authentication mode="Windows"></authentication>
<!--<anonymousIdentification enabled="false"/>-->
</system.web>
<system.serviceModel>
<services>
<service behaviorConfiguration="RWS.ServiceImplementation.ResearchService_Behavior"
name="RWS.ServiceImplementation.ResearchService">
<endpoint address="" binding="basicHttpBinding" name="DefaultEndpoint"
bindingNamespace="http://researchwebservice.model/research" bindingConfiguration="userHttp"
contract="RWS.ServiceContracts.IResearchServiceContract"/>
<!--<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />-->
</service>
</services>
<bindings>
<basicHttpBinding>
<binding name="userHttp"
closeTimeout="00:01:00"
openTimeout="00:01:00"
receiveTimeout="00:10:00"
sendTimeout="00:01:00"
allowCookies="false"
bypassProxyOnLocal="false"
hostNameComparisonMode="StrongWildcard"
maxBufferSize="2147483647"
maxBufferPoolSize="2147483647"
maxReceivedMessageSize="2147483647"
messageEncoding="Text"
textEncoding="utf-8"
transferMode="Buffered"
useDefaultWebProxy="true">
<readerQuotas maxDepth="2147483647"
maxStringContentLength="2147483647"
maxArrayLength="2147483647"
maxBytesPerRead="2147483647"
maxNameTableCharCount="2147483647" />
<security mode="TransportCredentialOnly">
<transport clientCredentialType="Ntlm" />
<message clientCredentialType="UserName"/>
</security>
</binding>
</basicHttpBinding>
</bindings>
<behaviors>
<serviceBehaviors>
<behavior name="">
<serviceMetadata httpGetEnabled="false" />
<serviceDebug includeExceptionDetailInFaults="true" />
<dataContractSerializer maxItemsInObjectGraph="2147483647"/>
</behavior>
<behavior name="RWS.ServiceImplementation.ResearchService_Behavior">
<serviceDebug includeExceptionDetailInFaults="true" />
<serviceMetadata httpGetEnabled="true" />
<dataContractSerializer maxItemsInObjectGraph="2147483647"/>
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
<system.webServer>
<modules runAllManagedModulesForAllRequests="true"/>
</system.webServer>
<connectionStrings>
<add name="ITSLogger.Properties.Settings.ITSLoggerConnectionString"
connectionString=/*omitted*/
providerName="System.Data.SqlClient" />
</connectionStrings>
<applicationSettings>
<ITSLogger.Properties.Settings>
<setting name="LogFilePath" serializeAs="String">
<value>C:\ITSLogger\LoggerTest\</value>
</setting>
<setting name="MailServer" serializeAs="String">
<value>/*omitted*/</value>
</setting>
<setting name="MailRecipient" serializeAs="String">
<value>[email protected]</value>
</setting>
<setting name="CanLogToEmail" serializeAs="String">
<value>False</value>
</setting>
<setting name="CanLogToFlatFile" serializeAs="String">
<value>False</value>
</setting>
<setting name="CanLogToTrace" serializeAs="String">
<value>False</value>
</setting>
<setting name="CanLogToConsole" serializeAs="String">
<value>False</value>
</setting>
<setting name="CanLogToEventLog" serializeAs="String">
<value>true</value>
</setting>
<setting name="CanLogToDB" serializeAs="String">
<value>False</value>
</setting>
</ITSLogger.Properties.Settings>
</applicationSettings>
<system.diagnostics>
<sources>
<source name="System.ServiceModel"
switchValue="Information, ActivityTracing"
propagateActivity="true">
<listeners>
<add name="traceListener"
type="System.Diagnostics.XmlWriterTraceListener"
initializeData= "/*omitted*/" />
</listeners>
</source>
</sources>
</system.diagnostics>
</configuration>
거기 나는 너무 계시 될지도 모른다고 생각했다.
웹 서비스를 직접 작성 했습니까? –
추가 정보 필요. 웹 서비스를 제어합니까? 문제를 재현 할 수 있는지 테스트하려면 콘솔 앱과 같은 별도의 앱에서 서비스를 호출 해 보았습니까? Fiddler 2와 같은 디버깅 도구를 실행할 때 무엇을 볼 수 있습니까? 어떻게 웹 서비스를 부르니? 반환되는 실제 HTTP 상태 코드는 무엇입니까? 브라우저를 통해 웹 서비스에 액세스 할 수 있습니까? –
WCF Webservice 또는 이전 스타일의 .asmx SOAP 서비스입니까? –