2013-05-30 2 views
0

그래서 Spring.net 프록시 객체를 사용하여 ServiceHosts를 약간만 세우면 모든 것이 잘됩니다. 이제 xml에 사용자 지정 오류 처리기를 추가하려고합니다. 필요하다면 봄에 일어 서기도하지만, 어떻게해야 할 지 전혀 모른다. 내가 찾은app.config의 EndpointBehaviour에 ErrorHandler를 추가하는 방법

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
    <configSections> 
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/> 
    <sectionGroup name="spring"> 
     <section name="context" type="Spring.Context.Support.ContextHandler, Spring.Core"/> 
     <section name="objects" type="Spring.Context.Support.DefaultSectionHandler, Spring.Core"/> 
    </sectionGroup> 
    <section name="databaseSettings" type="System.Configuration.NameValueSectionHandler"/> 
    </configSections> 

    <log4net> 
    <appender name="RollingFile" type="log4net.Appender.RollingFileAppender"> 
     <file value="logs/crowbarserver.log"/> 
     <maximumFileSize value="100KB"/> 
     <maxSizeRollBackups value="20"/> 
     <appendToFile value="true"/> 
     <layout type="log4net.Layout.PatternLayout"> 
     <conversionPattern value="%date [%thread] %-5level %logger %ndc (%file:%line) - %message%newline"/> 
     </layout> 
    </appender> 
    <root> 
     <level value="DEBUG"/> 
     <appender-ref ref="RollingFile"/> 
    </root> 
    </log4net> 

    <spring> 
    <context> 
     <resource uri="config://spring/objects"/> 
    </context> 
    <objects> 
     <object id="passDatabase" type="CrowbarCommon.Database.stub.StubDatabase, CrowbarCommon" autowire="autodetect" /> 
     <object id="authDatabase" type="CrowbarCommon.Database.stub.StubDatabase, CrowbarCommon" autowire="autodetect" /> 

     <object id="basicAuthManager" type="CrowbarCommon.Domain.AuthManagerImplementations.BasicAuthManager" > 
     <constructor-arg name="passwordDatabase" ref="passDatabase"/> 
     <constructor-arg name="authenticatedPlayerDatabase" ref="authDatabase"/> 
     </object> 

     <object id="serverService" singleton="false" type="DedicatedServer.ServerService, DedicatedServer" > 
     <constructor-arg name="authManager" ref="basicAuthManager"/> 
     </object> 

     <object id="ServerServiceManager" type="Spring.ServiceModel.Activation.ServiceHostFactoryObject, Spring.Services"> 
     <property name="TargetName" value="serverService" /> 
     </object> 

     <object id="playerService" singleton="false" type="DedicatedServer.PlayerService, DedicatedServer" > 
     <constructor-arg name="authManager" ref="basicAuthManager"/> 
     </object>  

     <object id="PlayerServiceManager" type="Spring.ServiceModel.Activation.ServiceHostFactoryObject, Spring.Services"> 
     <property name="TargetName" value="playerService" /> 
     </object> 

     <object id="restService" singleton="false" type="RESTService.RestService, RESTService" /> 

     <object id="RESTServiceManager" type="Spring.ServiceModel.Activation.ServiceHostFactoryObject, Spring.Services"> 
     <property name="TargetName" value="restService" /> 
     </object> 
    </objects> 
    </spring> 

    <databaseSettings> 
    <add key="db.user" value="username" /> 
    <add key="db.password" value="password" /> 
    <add key="db.dataSource" value="server,port" /> 
    <add key="db.database" value="dbname" /> 
    </databaseSettings> 

    <system.serviceModel> 
    <services> 
     <service name="serverService" behaviorConfiguration="ServiceBehaviour"> 
     <endpoint address="" binding="webHttpBinding" contract="CrowbarCommon.IServerService" behaviorConfiguration="web"/> 
     <host> 
      <baseAddresses> 
      <add baseAddress="http://localhost:8080/server/"/> 
      </baseAddresses> 
     </host> 
     </service> 
     <service name="playerService" behaviorConfiguration="ServiceBehaviour"> 
     <endpoint address="" binding="webHttpBinding" contract="CrowbarCommon.IPlayerService" behaviorConfiguration="web"/> 
     <host> 
      <baseAddresses> 
      <add baseAddress="http://localhost:8080/player/"/> 
      </baseAddresses> 
     </host> 
     </service> 
     <service name="restService" behaviorConfiguration="ServiceBehaviour"> 
     <endpoint address="" binding="webHttpBinding" contract="CrowbarCommon.IRestService" behaviorConfiguration="web"/> 
     <host> 
      <baseAddresses> 
      <add baseAddress="http://localhost:8080/rest/"/> 
      </baseAddresses> 
     </host> 
     </service> 
    </services> 
    <behaviors> 
     <serviceBehaviors> 
     <behavior name="ServiceBehaviour"> 
      <serviceMetadata httpGetEnabled="true"/> 
      <serviceDebug includeExceptionDetailInFaults="true"/> 
     </behavior> 
     </serviceBehaviors> 
     <endpointBehaviors> 
     <behavior name="web"> 
      <webHttp/> 
     </behavior> 
     </endpointBehaviors> 
    </behaviors> 
    </system.serviceModel> 

    <startup> 
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/> 
    </startup> 
</configuration> 

방법 코드에서 그것을 할 :

public class MyBehavior : IEndpointBehavior 
{ 
    public void ApplyDispatchBehavior(ServiceEndpoint endpoint, EndpointDispatcher endpointDispatcher) 
    { 
     endpointDispatcher.ChannelDispatcher.ErrorHandlers.Add(new MyErrorHandler()); 
    } 
} 

아무도 나를 도와 줄 수는 다음과 같이 내의 app.config은?

답변

0

전혀 신경 쓰지 않고 직접 질문했습니다.

THIS 기사가 가장 눈에 띄고 전체 예제를 제공했습니다. 예제 섹션을 따라하면됩니다.

+0

Nicholas, 나는 WCF와 Spring을 사용하는 RESTful 웹 서비스의 전체 예제에 감사하게 생각한다. 여기에 설정 파일이 있지만 RestService가 어떻게 구현되는지는 알지 못합니다. 물론 왜 이런 것들이 어떻게 구성되어 있는지, 즉 조각들이 어떻게 맞는지에 대한 이해가 없습니다. 미리 감사드립니다. – Michael