目前我們使用代碼<System.Web.Services.WebService(Namespace:="https://ourservice/")>
來設置命名空間,可以在web.config中完成嗎?我看過,但找不到哪裏?有沒有什麼辦法可以在配置而不是代碼中設置Web服務的名稱空間?
VS2008,ASMX web服務。
目前我們使用代碼<System.Web.Services.WebService(Namespace:="https://ourservice/")>
來設置命名空間,可以在web.config中完成嗎?我看過,但找不到哪裏?有沒有什麼辦法可以在配置而不是代碼中設置Web服務的名稱空間?
VS2008,ASMX web服務。
最重要的問題尚未問:爲什麼你認爲你想做的事這個。
大多數問這個問題的人都覺得名字空間與部署服務的URL有關。他們完全沒有任何關係。事實上,命名空間可能是一個URI,如「urn:services.yourcompany.com」,這顯然不是互聯網上的一個位置。
你有試過嗎?
<Services>
<asp:ServiceReference
path="https://ourservice" />
</Services>
另一個選項可能是在web.config文件中創建對並使用ConfigurationManager類讀取該部分。
<appSettings>
<add key="OurService"
value="https://ourservice"/>
</appSettings>
這是一個ASMX web服務,不是aspx頁面,所以它必須是配置文件中的一個條目。 – Jim 2010-06-22 16:57:49
我不認爲你可以把它放在配置文件(雖然我從來沒有打擾檢查)。
如果你只是希望它存儲在中央位置,你可以使用總是使用恆定:
internal sealed class ServiceConstants {
internal const string Namespace = "urn:example.com/~coolest/service/ever";
}
[ServiceContract(Namespace=ServiceConstants.Namespace)]
[WebService(Namespace=ServiceConstants.Namespace)]
public sealed class MyService {}
謝謝,但不想在遷移到diff位置時需要更改代碼並重新編譯。 – Jim 2010-06-22 19:52:07
謝謝,但我卡住了,因爲Web服務使用者已經爲此配置。我們有1個QA設置和另一個設置Prod。我希望能夠完全刪除它,但爲了以防萬一,正在尋找一種更好的方式來處理這個問題,而不是改變代碼並重新編譯。如果這是不可能的,那麼我會有更多的彈藥去除它。 – Jim 2010-06-28 12:25:06
@Jim:你應該將他們指向這個問題。他們犯了一個嚴重的錯誤。不明白命名空間。它們並不意味着在一個環境與另一個環境之間改變。他們不是在互聯網上的位置。 – 2010-06-28 13:41:51
謝謝,這就是我所需要的。 – Jim 2010-06-28 15:54:56