2016-11-12 4 views
1

いくつかの奇妙な理由のために、私の蒼穹機能は、アプリケーション構成からの接続文字列を見なくなりました。azure関数で接続文字列が設定されていないのはなぜですか?

私はこのコードが正常に機能していたことを確認できます。私はmain関数で簡単な検証を続けています。最後に、設定された接続文字列の検索を停止しました。

mongoにアクセスすると、GetMetaData関数で問題が発生します。cs接続文字列エラーで例外が発生しました。オブジェクト参照がオブジェクトのインスタンスに設定されていません。つまり、接続文字列mongo:csが見つかりませんでした。

どの接続文字列がロードされているかを調べるためにデバッグコードを関数に追加しました。ロードされたものが設定されたものと一致していないことがわかりました。

誰も同様の問題に直面していますか?

あなたは完全な機能コード、

ランタイムバージョン構成された接続文字列で出力し、画像を見つけることができます:あなたがバグを発見した、最新の(〜1)

using MongoDB.Bson; 
using MongoDB.Driver; 
using System.Configuration; 
using System.Net; 

public static async Task<HttpResponseMessage> Run(HttpRequestMessage req, TraceWriter log) 
{ 
    log.Info($"C# HTTP trigger function processed a request. RequestUri={req.RequestUri}"); 

    // parse query parameter 
    string sId = req.GetQueryNameValuePairs() 
     .FirstOrDefault(q => string.Compare(q.Key, "id", true) == 0) 
     .Value; 

    Guid id; 
    log.Info($"Step1={sId}"); 
    if(Guid.TryParse(sId, out id)) 
    { 
     log.Info($"Step1.5={id}"); 
     string metaData = GetMetaData(id, log); 
     log.Info($"Step2"); 
     if(String.IsNullOrEmpty(metaData)) 
     { 
      log.Info($"Step3"); 
      return req.CreateResponse(HttpStatusCode.NotFound); 
     } 
     else 
     { 
      log.Info($"Step4"); 
      return req.CreateResponse(HttpStatusCode.OK, metaData); 
     } 

    } 
    else 
    { 
     log.Info($"Step5"); 
     return req.CreateResponse(HttpStatusCode.BadRequest); 
    } 
} 

private static string GetMetaData(Guid id, TraceWriter log) 
{ 
    //Begin debug code that was added after the connection string stopped working 
    log.Info($"Step6"); 
    var count = ConfigurationManager.ConnectionStrings.Count; 
    log.Info($"Count={count}"); 
    var name0 = ConfigurationManager.ConnectionStrings[0].Name; 
    log.Info($"Name0={name0}"); 
    var name1 = ConfigurationManager.ConnectionStrings[1].Name; 
    log.Info($"Name1={name1}"); 
    //End debug code 
    string cnn = ConfigurationManager.ConnectionStrings["mongo:cs"].ConnectionString; 
    log.Info($"Step7"); 
    IMongoClient client = new MongoClient(cnn); 
    log.Info($"Step8"); 
    IMongoDatabase db = client.GetDatabase("cxsopdev"); 
    log.Info($"Step9"); 
    var filter = Builders<BsonDocument>.Filter.Eq("_id", id); 
    log.Info($"Step10"); 
    var result = db.GetCollection<BsonDocument>("excelfiletoload").Find(filter).FirstOrDefault(); 
    log.Info($"Step11"); 
    return result.ToString(); 
} 

2016-11-12T00:27:56.786 Function started (Id=20c0183f-9989-4a62-9834-461df7fd8ae5) 
2016-11-12T00:27:56.786 C# HTTP trigger function processed a request. RequestUri={...} 
2016-11-12T00:27:56.786 Step1=857B689F-C32B-46DA-BCD9-05D92A0F151A 
2016-11-12T00:27:56.786 Step1.5=857b689f-c32b-46da-bcd9-05d92a0f151a 
2016-11-12T00:27:56.786 Step6 
2016-11-12T00:27:56.786 Count=2 
2016-11-12T00:27:56.786 Name0=LocalSqlServer 
2016-11-12T00:27:56.786 Name1=LocalMySqlServer 
2016-11-12T00:27:56.786 Function completed (Failure, Id=20c0183f-9989-4a62-9834-461df7fd8ae5) 
2016-11-12T00:27:56.786 Exception while executing function: Functions.GetImportMetaData. GetImportMetaData: Object reference not set to an instance of an object. 

Connection strings configured

答えて

2

を!

今のところ​​アプリの設定を〜0.9に戻してください。私たちはすぐに〜1をアップデートしてほしい。私はそれが修正されたことを確認した後、これを更新することを忘れないように頑張ります。

はまた、我々が正常に今から取り組んでのConfigurationManagerをテストすることを確認するために問題を作成した... https://github.com/Azure/azure-webjobs-sdk-templates/issues/353

+0

クリスは安定しているとみなす1.0または同じプレビューのそのちょうど別の増分のですか? – 4c74356b41

+1

Azure関数はまだプレビュー中です。私たちは、今年と今年の間に開催されるGAとの間の主催者に大きな変更を加えました。 –

関連する問題