日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪(fǎng)問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

在web项目中的类库中引用webservice 在部署后更改webservice路径的方法

發(fā)布時(shí)間:2025/3/16 编程问答 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 在web项目中的类库中引用webservice 在部署后更改webservice路径的方法 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

在一次開(kāi)發(fā)過(guò)程中發(fā)現(xiàn)這樣的問(wèn)題:
我引用外部的webservice連接并不是在solution里面的web層,而是在solution里面的類(lèi)庫(kù)中引用的,原本在web中引用自動(dòng)生成的引用路徑會(huì)在web.config里面生成,例如:


<appSettings>
????????
<add?key="BidSer.Service"?value="http://192.168.1.16:8083/Service.asmx"/>
</appSettings>
但是如果是在類(lèi)庫(kù)里面引用的話(huà),默認(rèn)就不會(huì)在web.config里面出現(xiàn)key值了,會(huì)在類(lèi)庫(kù)里面自動(dòng)生成app.config,生成如下的配制信息:
<?xml?version="1.0"?encoding="utf-8"??>
<configuration>
????
<configSections>
??
<sectionGroup?name="applicationSettings"?type="System.Configuration.ApplicationSettingsGroup,?System,?Version=2.0.0.0,?Culture=neutral,?PublicKeyToken=b77a5c561934e089"?>
???
<section?name="COM365.BLL.Properties.Settings"?type="System.Configuration.ClientSettingsSection,?System,?Version=2.0.0.0,?Culture=neutral,?PublicKeyToken=b77a5c561934e089"?requirePermission="false"?/>
??
</sectionGroup>
?
</configSections>
?
<applicationSettings>
??
<COM365.BLL.Properties.Settings>
???
<setting?name="COM365_BLL_BidSer_Service"?serializeAs="String">
????
<value>http://192.168.1.16:8083/Service.asmx</value>
???</setting>
??
</COM365.BLL.Properties.Settings>
?
</applicationSettings>
</configuration>
本來(lái)我想,在發(fā)布網(wǎng)站之后app.config應(yīng)該會(huì)部署出來(lái)吧,否則怎么在部署之后更改webservice的引用呢?可是在部署之后app.config找不到了,難道是把a(bǔ)pp.config里面的值封裝到bin里面去了嗎?有點(diǎn)匪夷所思,如果封裝進(jìn)去的話(huà),那何必生成一個(gè)app.config給咱們用哦。仔細(xì)查找在引用webservice之后生成的東西。
第一,在類(lèi)庫(kù)里面會(huì)自動(dòng)添加一個(gè)properties文件夾

里面會(huì)通過(guò)代碼生成器生成兩個(gè)配制文件,不能手動(dòng)更改的。
第二個(gè)生成的就是app.config文件了。
第三個(gè)會(huì)在類(lèi)庫(kù)的跟目錄下面生成一個(gè)Setting的類(lèi),這是一個(gè)密封類(lèi),并且是訪(fǎng)問(wèn)的權(quán)限是internal的。

namespace?COM365.BLL.Properties
{


????
//?This?class?allows?you?to?handle?specific?events?on?the?settings?class:
????
//??The?SettingChanging?event?is?raised?before?a?setting's?value?is?changed.
????
//??The?PropertyChanged?event?is?raised?after?a?setting's?value?is?changed.
????
//??The?SettingsLoaded?event?is?raised?after?the?setting?values?are?loaded.
????
//??The?SettingsSaving?event?is?raised?before?the?setting?values?are?saved.
????internal?sealed?partial?class?Settings
????
{

????????
public?Settings()
????????
{
????????????
//?//?To?add?event?handlers?for?saving?and?changing?settings,?uncomment?the?lines?below:
????????????
//
????????????
//?this.SettingChanging?+=?this.SettingChangingEventHandler;
????????????
//
????????????
//?this.SettingsSaving?+=?this.SettingsSavingEventHandler;
????????????
//
????????}


????????
private?void?SettingChangingEventHandler(object?sender,?System.Configuration.SettingChangingEventArgs?e)
????????
{
????????????
//?Add?code?to?handle?the?SettingChangingEvent?event?here.

????????}


????????
private?void?SettingsSavingEventHandler(object?sender,?System.ComponentModel.CancelEventArgs?e)
????????
{
????????????
//?Add?code?to?handle?the?SettingsSaving?event?here.

????????}

????}

}

這里面能做什么呢,通過(guò)這個(gè)類(lèi)就可以來(lái)更改app.config里面的元素值了。因?yàn)樗且粋€(gè)inernal的,所以在別的類(lèi)庫(kù)和web層里面無(wú)法直接使用這個(gè)類(lèi),所以我在此引用webservice的類(lèi)庫(kù)里面做了一個(gè)Config來(lái)封裝它來(lái)達(dá)到可以在外部更新值的效果。

namespace?COM365.BLL
{
????
public?class?Config
????
{
????????
/**////?<summary>
????????
///?根據(jù)?Web.Config?配制?BidSer.Service?的路徑
????????
///?</summary>

????????public?static?void?SetBidSerUrl()
????????
{
????????????COM365.BLL.Properties.Settings.Default.Properties[
"COM365_BLL_BidSer_Service"].DefaultValue?=?ConfigurationManager.AppSettings["BidSer.Service"];
????????????COM365.BLL.Properties.Settings.Default.Save();
????????????COM365.BLL.Properties.Settings.Default.Reload();
????????}

????}

}
第一步是通過(guò)web.config里面的值來(lái)更新app.config里面的值,因?yàn)镾etting.Default是只讀的,所以只能通過(guò)Properties來(lái)更新了。
第二步和第三步需要放一起的,否則更新不會(huì)有效果的。
如果跟我一樣是通過(guò)讀取web.config里面的值來(lái)更新app.config里面的值的話(huà),就可以把這函數(shù)放到Golable里面,這樣的效果就是每次web.config被更改或者服務(wù)器重起的話(huà)都會(huì)自動(dòng)更新到app.config里面了。


<%@?Application?Language="C#"?%>

<script?RunAt="server">

????
void?Application_Start(object?sender,?EventArgs?e)
????
{
????????
//?在應(yīng)用程序啟動(dòng)時(shí)運(yùn)行的代碼

????????CommConfig.OnApplicationStart(Server.MapPath(Context.Request.ApplicationPath));
????????COM365.BLL.Config.SetBidSerUrl();
????}


????
void?Application_End(object?sender,?EventArgs?e)
????
{
????????
//??在應(yīng)用程序關(guān)閉時(shí)運(yùn)行的代碼


????}


????
void?Application_Error(object?sender,?EventArgs?e)
????
{
????????
//?在出現(xiàn)未處理的錯(cuò)誤時(shí)運(yùn)行的代碼


????}


????
void?Session_Start(object?sender,?EventArgs?e)
????
{
????????
//?在新會(huì)話(huà)啟動(dòng)時(shí)運(yùn)行的代碼???????????????
????}


????
void?Session_End(object?sender,?EventArgs?e)
????
{
????????
//?在會(huì)話(huà)結(jié)束時(shí)運(yùn)行的代碼。?
????????
//?注意:?只有在?Web.config?文件中的?sessionstate?模式設(shè)置為

????????
//?InProc?時(shí),才會(huì)引發(fā)?Session_End?事件。如果會(huì)話(huà)模式設(shè)置為?StateServer?
????????
//?或?SQLServer,則不會(huì)引發(fā)該事件。


????}

???????
</script>


轉(zhuǎn)載于:https://www.cnblogs.com/sherrys/archive/2007/01/25/630351.html

總結(jié)

以上是生活随笔為你收集整理的在web项目中的类库中引用webservice 在部署后更改webservice路径的方法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。