2017-04-06 72 views
0

我有一個WCF服務應用程序(A),其中包含web.config中的應用程序設置。多個WCF服務應用程序的應用程序設置變爲空?

<appSettings>  
<add key="A" value="a1"/> 

&有一個包含內部的web.config應用設置另一個WCF服務應用程序(B)。

<appSettings> 
    <add key="B" value="b1"/> 
</appSettings> 

然後我把B.dll引用到A裏面並調用A類中的B.GetData1()方法。

public string GetData(int value) 
{ 
    B.Service1 b = new B.Service1(); 
    b.GetData1(1); 

    return string.Format("You entered: {0}", value); 
} 

這是B級內的b.GetData1()方法的代碼。

public string GetData1(int value) 
{ 
    string s = ConfigurationManager.AppSettings["B"].ToString(); 
    return string.Format("You entered: {0}", value); 
} 

但是在這裏我得到了

string s = ConfigurationManager.AppSettings["B"].ToString(); 

如何解決這個問題空值?請幫忙。

謝謝。

回答

0

配置文件不在dll的上下文中使用,但用於web應用程序。 即使您有與服務「B」關聯的web.config添加服務中的B.dll引用,「A」也不會使其可用於在服務A上下文中運行的任何代碼。服務A中的任何代碼都可以讀取配置只能從其自己的web.config文件中訪問,並且無法訪問服務B的任何配置。 解決方法是,您需要將服務B的web.config中存在的相同設置/配置添加到服務A的web.config中。所以移動<add key="B" value="b1"/>服務A的web.config,它應該工作。

+0

嗨...感謝您的回覆..是否有任何方法可以將應用程序設置複製到A的web.config中?爲什麼我問這只是一個例子,在實際案例中'B'服務正在被幾個應用程序調用。我認爲這不是一個更好的方式來添加'B的應用程序設置內呼叫應用程序? – ANR

+0

不幸的是,除了應對設置之外,沒有其他更好的方法可以做到。但是在現實世界中,如果您將業務邏輯開發爲WCF服務,那麼您會希望將其作爲其他應用程序/ wcf服務中的服務使用。如果它作爲WCF服務開發,那麼你不應該通過添加dll引用來使用它。 –

+0

謝謝..贏了。 – ANR

0

您應該在應用程序A的配置中配置<add key="B" value="b1"/>才能使其正常工作。

0

嘗試在應用程序A的web.config中放置您試圖訪問的應用程序設置(B)。