仅在localhost上执行代码(开发时)

时间:2013-06-02 08:51:55

标签: c# asp.net-mvc

我做MVC应用程序,我只有在开发时才想要执行的代码行,以及部署应用程序时代码的另一部分类似代码。 例如,我有控制器操作将邮件发送到某个地址,但我希望在部署和测试时该地址不同。

总是很难改变它,我经常忘记这样做。

2 个答案:

答案 0 :(得分:6)

Visual Studio提供了许多方法来执行此操作,您要使用哪种方法取决于您想要做什么。

例如,您可以使用构建目标来指定所需的构建类型,Release和Debug很常见,但您也可以创建其他构建目标。然后,您可以在代码中添加#if预处理器语句,以根据所选的构建进行操作。

另一种听起来像你想要的方法是在你的app或web.config中使用App Settings。然后使用构建转换根据构建类型转换配置(例如,您将看到Web.Debug.config或Web.Release.config。当您发布站点时,Visual Studio将自动将这些转换应用于您的配置文件并将应用程序设置更改为您对该构建类型所需的任何内容。

因此,使用您的示例,您将在Web.config中使用它:

<appSettings>
    <add key="notifyAddress" value="debug@foo.com" />
</appSettings>

然后,在您的Web.Release.config中进行此转换:

<appSettings>
    <add key="notifyAddress" value="release@foo.com" 
        xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/>
</appSettings>

在您的代码中,您有:

string emailAddress = ConfigurationManager.AppSettings["notifyAddress"];

现在,当您发布您的网站时,emailAddress将自动拥有release@foo.com。

答案 1 :(得分:1)

看看这是否有帮助:https://stackoverflow.com/a/4597270/1043824。推荐的方法仍然是配置文件方法。

  

在Visual Studio 2010中,Request.ServerVariables(“SERVER_SOFTWARE”)将为开发服务器返回Nothing(null),为我的Win7 Pro IIS / VS2010安装返回“Microsoft-IIS / 7.5”。