2016-12-30 66 views
0

對不起,如果這有點複雜,但我只是想更好地理解Url.RouteUrl()如何在C#.Net環境中工作。我可以在使用Url.RouteUrl()時設置域名嗎?

我有一個應用程序,通過發佈Web功能部署到兩個單獨的服務器;一個用於測試,另一個用於現場製作。實時生產服務器是面向Web的 - 意味着它可以通過註冊的域進行訪問。測試服務器是內部的,只能通過網絡訪問。

此應用程序的功能之一是發送一封電子郵件,其中包含一個鏈接到應用程序中特定頁面的URL。它獲得該使用URL的東西,看起來像:

Url.RouteUrl("Default", new { controller = "foo", action = "bar"}, "http"); 

這樣就解決到與內部服務器地址結構,無論它是測試服務器或生產服務器的URL。

我想要做的就是將它解析爲測試部署的內部服務器地址和生產部署的註冊域名,但我似乎無法弄清楚這些域在哪裏正在建立。

我已經檢查了部署設置(發佈),但它們似乎正確寫入了我所期望的內容。

最終我要找的是結果,看起來像:

Testing:: http://testserver.internal.domain/foo/bar 
Production:: http://www.example.com/foo/bar 

誰能給我解釋一下其中的域名地址是從Url.RouteUrl()方法被調用,以及它如何改變以適應我的需求?

謝謝。

回答

1

您使用的過載容易出錯,我建議使用this過載。

將主機保存在Web配置文件中,對於兩種環境都不同。並通過主參數傳遞。

////超載使用

public virtual string RouteUrl(
    string routeName, 
    RouteValueDictionary routeValues, 
    string protocol, 
    string hostName 
) 

實施例的使用情況。 1.測試 2.生產

Url.RouteUrl("Default", new RouteValueDictionary(new { action = "foo", controller = "bar" }), 
"http", "test.local.url"); 


Url.RouteUrl("Default", new RouteValueDictionary(new { action = "foo", controller = "bar" }), 
"http", "production.public.url"); 
+0

這就是我一直在尋找。謝謝! – user2170742

+0

很高興幫助。 – mfahadi

相關問題