2012-01-09 9 views
0

Qに失敗:なぜそれがローカルに検証しますが、サーバ

次のコードは、ローカルで非常にうまく動作しますが、私は、サーバーの.theのページにしようとするとハングアップする(と、ログインページにリダイレクト)。

     XDocument.Load(targetFileName); 
         XmlReaderSettings settings = new XmlReaderSettings(); 
         settings.CloseInput = true; 
         settings.ValidationEventHandler += Handler; 

         settings.ValidationType = ValidationType.Schema; 
         settings.Schemas.Add(null, System.Web.HttpContext.Current.Server.MapPath("~/importSchema/IntialSchema.xsd")); 
         settings.ValidationFlags = 
          XmlSchemaValidationFlags.ReportValidationWarnings | 
         XmlSchemaValidationFlags.ProcessIdentityConstraints | 
         XmlSchemaValidationFlags.ProcessInlineSchema | 
         XmlSchemaValidationFlags.ProcessSchemaLocation; 
         using (StreamReader str_reader = new StreamReader(targetFileName)) 
         { 
          using (XmlReader validatingReader = XmlReader.Create(str_reader, settings)) 
          { 
           try 
           { 
            while (validatingReader.Read()) 
            { 

            } 
           } 
           catch (XmlValidationFailedException ex) 
           { 
            Common.ErrMappingForInformix.WriteLog(ex.Message); 
            this.ShowStatus("error","", 1); 
            validationFailed = true; 
           } 

          } 
         } 
         if (validationFailed) 
         { 
          return; 
         } 

private static void Handler(object sender, ValidationEventArgs e) 
     { 
      if (e.Severity == XmlSeverityType.Error || e.Severity == XmlSeverityType.Warning) 
      { 
       string message = String.Format("Line: {0}, Position: {1} \"{2}\"", 
          e.Exception.LineNumber, e.Exception.LinePosition, e.Exception.Message); 

       throw new XmlValidationFailedException(message, e.Exception); 
      } 
     } 

[Serializable()] 
    public class XmlValidationFailedException : System.Exception 
    { 
     public XmlValidationFailedException() : base() { } 
     public XmlValidationFailedException(string message) : base(message) { } 
     public XmlValidationFailedException(string message, Exception innerException) : base(message, innerException) { } 

     protected XmlValidationFailedException(System.Runtime.Serialization.SerializationInfo info, 
      System.Runtime.Serialization.StreamingContext context) { } 
    } 

私は.ITがローカルに大丈夫動作しますが、私は、長い時間を待って、サーバー上では、ログインにリダイレクト何が起こるかを確認するために、無効なxmlファイルを試してみてくださいpage.i IISとエラーフォルダのイベントビューアを確認してください。何も見つかりません。

+0

SSCCE(http://homepage1.nifty.com/algafield/sscce.html)を提供した場合、手助けするほうがずっと簡単です –

答えて

3

コードにロギングまたはトレースを追加します。これは何が間違っているかを追跡するのに役立ちます。明らかに、サーバーのセットアップと開発用PCの間にはいくつかの違いがあります。これは、ファイルパス、アクセス許可、またはIISの別の構成であることがよくあります。トレースを使用すると、ファイルパス、変数値などをトレースファイルに出力できます。例えば

Trace.Write("Import schema directory: " + Server.MapPath("~/importSchema")); 

settings.Schemas.Add(null, System.Web.HttpContext.Current.Server.MapPath("~/importSchema/IntialSchema.xsd")); 

http://msdn.microsoft.com/en-us/library/bb386420.aspx参照してください。

幸運を祈る!

+0

エラーフォルダに書き込み権限がありません:( –

関連する問題