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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

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

在一次開發過程中發現這樣的問題:
我引用外部的webservice連接并不是在solution里面的web層,而是在solution里面的類庫中引用的,原本在web中引用自動生成的引用路徑會在web.config里面生成,例如:


<appSettings>
????????
<add?key="BidSer.Service"?value="http://192.168.1.16:8083/Service.asmx"/>
</appSettings>
但是如果是在類庫里面引用的話,默認就不會在web.config里面出現key值了,會在類庫里面自動生成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>
本來我想,在發布網站之后app.config應該會部署出來吧,否則怎么在部署之后更改webservice的引用呢?可是在部署之后app.config找不到了,難道是把app.config里面的值封裝到bin里面去了嗎?有點匪夷所思,如果封裝進去的話,那何必生成一個app.config給咱們用哦。仔細查找在引用webservice之后生成的東西。
第一,在類庫里面會自動添加一個properties文件夾

里面會通過代碼生成器生成兩個配制文件,不能手動更改的。
第二個生成的就是app.config文件了。
第三個會在類庫的跟目錄下面生成一個Setting的類,這是一個密封類,并且是訪問的權限是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.

????????}

????}

}

這里面能做什么呢,通過這個類就可以來更改app.config里面的元素值了。因為它是一個inernal的,所以在別的類庫和web層里面無法直接使用這個類,所以我在此引用webservice的類庫里面做了一個Config來封裝它來達到可以在外部更新值的效果。

namespace?COM365.BLL
{
????
public?class?Config
????
{
????????
/**////?<summary>
????????
///?根據?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();
????????}

????}

}
第一步是通過web.config里面的值來更新app.config里面的值,因為Setting.Default是只讀的,所以只能通過Properties來更新了。
第二步和第三步需要放一起的,否則更新不會有效果的。
如果跟我一樣是通過讀取web.config里面的值來更新app.config里面的值的話,就可以把這函數放到Golable里面,這樣的效果就是每次web.config被更改或者服務器重起的話都會自動更新到app.config里面了。


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

<script?RunAt="server">

????
void?Application_Start(object?sender,?EventArgs?e)
????
{
????????
//?在應用程序啟動時運行的代碼

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


????
void?Application_End(object?sender,?EventArgs?e)
????
{
????????
//??在應用程序關閉時運行的代碼


????}


????
void?Application_Error(object?sender,?EventArgs?e)
????
{
????????
//?在出現未處理的錯誤時運行的代碼


????}


????
void?Session_Start(object?sender,?EventArgs?e)
????
{
????????
//?在新會話啟動時運行的代碼???????????????
????}


????
void?Session_End(object?sender,?EventArgs?e)
????
{
????????
//?在會話結束時運行的代碼。?
????????
//?注意:?只有在?Web.config?文件中的?sessionstate?模式設置為

????????
//?InProc?時,才會引發?Session_End?事件。如果會話模式設置為?StateServer?
????????
//?或?SQLServer,則不會引發該事件。


????}

???????
</script>


轉載于:https://www.cnblogs.com/sherrys/archive/2007/01/25/630351.html

總結

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

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。