发布WCF后出现FaultException错误

时间:2015-12-31 17:05:36

标签: c# winforms wcf azure faultexception

我为我的一个桌面应用程序开发了WCF服务,并使用DB为Azure服务器托管。

我刚刚在本地桌面应用程序上连接WCF服务Url。

我从应用程序调用登录方法。没问题。

一旦我调用了我的第二个方法,那么我总是遇到FaultException错误

错误就像是看到细节错误的内部异常。但是一旦我进去,那么内部异常就是空的。

我还将<serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />放入我的wcf web.config

一旦我将本地WCF与我的桌面应用程序的实时数据库连接,那么一切正常。

一旦我使用我的桌面应用程序将Live WCF与live db连接,然后无法插入和更新数据。

我的第二种方法有这个代码。

 public class Service1 : IService1
    {
     public void method1(int nm_Id, string f_LoginStatus)
            {
                class1 lo_class = new class1();

                    DateTime dt = DateTime.UtcNow;
                    //check records exist or not
                        lo_class.dt_date = dt;
                        lo_class.dtCreatedOn = dt;
                        lo_tblAttendance.dtUpdatedOn = dt;

                        _context.tblAttendances.Add(lo_tblAttendance);

                        Save();
                    }
           }
    }

 [ServiceContract]
    public interface IService1
    {
        [OperationContract]
        [FaultContract(typeof(InitializationFault))]
        void method1(int nm_Id, string f_LoginStatus);
     }


   [DataContract]
    public class InitializationFault
    {
        public InitializationFault(Exception exc, string msg)
        {
            Exception = exc;
            Message = msg;
        }

        [DataMember]
        public Exception Exception { get; set; }

        [DataMember]
        public string Message { get; set; }
    }

从桌面应用调用以上方法:

  lo_loginServices = new MyService.Service1Client();
  try
                    {
                        lo_loginServices.method1(lo_EmpId, "In"); // getting inner exception error here
                    }
                    catch (FaultException<InitializationFault> ex)
                    {
                        Console.WriteLine("FaultException<InitializationFault>: " + ex.Detail);
                        //more
                    }

我写了catch部分,然后我也无法看到实际的错误。

1 个答案:

答案 0 :(得分:0)

您可以尝试在Fault中包含异常详细信息。将 IncludeExceptionDetailInFaults 设置为 true ,以使异常信息流向客户端以进行调试。

阅读here

<configuration>  
<system.serviceModel>  
  <services>  
    <!-- Step 1. Add a behaviorConfiguration attribute --> 
    <service  
      name="Microsoft.WCF.Documentation.SampleService"  
      behaviorConfiguration="metadataAndDebug">  
      <host>  
        <baseAddresses>  
          <add baseAddress="http://localhost:8080/SampleService" />  
        </baseAddresses>  
      </host>  
      <endpoint  
         address="mex"  
         binding="mexHttpBinding"  
         contract="IMetadataExchange"  
      />  
    </service>  
  </services>  
  <behaviors>  
    <serviceBehaviors>  
      <!-- Step 2. Add a new behavior below.-->
      <behavior name="metadataAndDebug">  
        <serviceMetadata  httpGetEnabled="true" httpGetUrl=""/>  
      <!-- Step 3. Add a <serviceDebug> element -->
    <serviceDebug httpHelpPageEnabled="true" includeExceptionDetailInFaults="true" />  
      </behavior>  
    </serviceBehaviors>  
  </behaviors>  
</system.serviceModel>  
</configuration>