2016-10-18 4 views
0

ローカルホスト上の接続文字列を暗号化して管理しましたが、問題なく読み取りました。ウェブサイトが公開された後に無効な暗号化キー

私のWebHoteでプロジェクトを公開した後、その話はかなり異なっています。

私はエラーを以下の取得:私はローカルでそれを解読し、その後、それは私のwebhotelに公開された後にそれを暗号化する必要がある場合

Key not valid for use in specified state. (Exception from HRESULT: 0x8009000B)

Imが不思議?私は、マシンキーを追加しなければならないことを人々が示唆する別のスレッドを見てきました。どこに置くのですか、そしてどこで見つけるのですか?

全体のスタックトレースがhere

を見ることができる私は、暗号化するには、以下のCMDを使用:

aspnet_regiis -pef "connectionStrings" "PATH" -prov "DataProtectionConfigurationProvider" 
+0

どのサーバーをお使いですか?多分あなたはデスクトッププログラミングのためだけにライブラリ呼び出しを使用しようとしますか? – Aristos

+0

私は賃貸しているそのちょうど標準のiisサーバー –

答えて

0

だから私は、のmachineKey doesntのがされているキーと一致したときに次のエラーが生じていることを考え出し最初の場所(私のlocalhost)の文字列を暗号化するために使用されます。

そこで私は以下の方法しなければならなかった。そうすることによって

private void ProtectSection(string sectionName, string provider) 
{ 
    Configuration config = WebConfigurationManager.OpenWebConfiguration("~/"); 
    ConfigurationSection section = config.GetSection(sectionName); 

    if (section != null && !section.SectionInformation.IsProtected) 
    { 
     section.SectionInformation.ProtectSection(provider); 
     config.Save(); 
    } 
} 

そして、私のGlobal.asaxファイルでそれを呼び出すに..

は、私が最初に私のweb.configファイルをアップロード保護されていないとウェブサイトが初めて実行されたときに、私のウェブホテルに接続文字列を暗号化するように頼んだ。明らかに、それはそれ自身のマシンキーを使用していたので、何も競合しませんでした。

関連する問題