C# 将asmx与CodeBehind混合

C# 将asmx与CodeBehind混合,c#,asp.net,web-services,C#,Asp.net,Web Services,我希望在asmx文件中包含版本信息,而不是web.config,这样我就可以编辑版本号而无需重新编译。有没有一个干净的方法来实现这一点?我确实想出了一个办法,但它非常可怕: WS.asmx: <%@ WebService Language="C#" CodeBehind="SiteWS.asmx.cs" Class="SiteWS" %> 新的WS.asmx: <%@ WebService Language="C#" CodeBehind="SiteWS.asmx.cs" C

我希望在asmx文件中包含版本信息,而不是web.config,这样我就可以编辑版本号而无需重新编译。有没有一个干净的方法来实现这一点?我确实想出了一个办法,但它非常可怕:

WS.asmx:

<%@ WebService Language="C#" CodeBehind="SiteWS.asmx.cs" Class="SiteWS" %>
新的WS.asmx:

<%@ WebService Language="C#" CodeBehind="SiteWS.asmx.cs" Class="SiteWS2" %>    
public class SiteWS2 : SiteWS
{
    static SiteWS2()
    {
        SiteWS.WSVersion = "1.0";
    }
}

你的想法看起来很有趣

是的,如果我们将版本信息放在web.config中,每当我们触摸web.config时,它就会进行重新编译

我认为,我们应该以两种方式处理版本信息:

web.config中的主 web.config的重写应位于.asmx文件上
因此,根据需求,我们可以考虑在何处设置版本信息。

您为什么要这样做?@ChrisBint:该数字对应于exe的版本号。如果一个新的EXE被释放,那就可以编辑一个ASMX文件并上传一个EXE,而不是在代码工作的时候执行重新编译。当然,可以搁置当前工作并从版本控制重新编译最后一个版本,但这更简单。进行不必要的完整卷展是需要避免的。抱歉,澄清一下,我的意思是,为什么不将其存储在web.config中。当web.config非常适合存储这样的“配置”信息时,似乎有点像黑客攻击。@ChrisBint:此服务位于我网站的根目录中,可能不应该,但我现在不会更改它。我不想在根web.config文件中塞进更多垃圾;它已经够笨拙的了。web.config不需要我重新编译网站。我只是不想在web.config中看到这些信息。无论如何,这并没有真正回答我的问题。
<%@ WebService Language="C#" CodeBehind="SiteWS.asmx.cs" Class="SiteWS2" %>    
public class SiteWS2 : SiteWS
{
    static SiteWS2()
    {
        SiteWS.WSVersion = "1.0";
    }
}
public class SiteWS : System.Web.Services.WebService
{
    public static string WSVersion = null;
}