我已经在Visual Studio 2012中创建了我的第一个ASP Web服务,其代码现在如下所示(这是文件TestService.asmx.cs):

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Services;

namespace MyWS
{
    [WebService(Namespace = "http://something.org/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    [System.ComponentModel.ToolboxItem(false)]
    public class WS1 : System.Web.Services.WebService
    {

        [WebMethod]
        public string HelloWorld()
        {
            return "Hello World";
        }
    }
}


我现在想做的是将类WS1重命名为更具信息性的内容,例如HelloWorldService。为此,我认为Visual Studio的重构功能应该绰绰有余,因此我选择了WS1,单击重构并重命名了该类。但是,在运行Web服务时,尝试导致服务器错误,提示


  解析器错误消息:无法创建类型'MyWS.WS1'。


从中可以得出结论,我的项目中仍有一部分认为Web服务被命名为WS1。我发现文件TestService.asmx保持不变,仍然包含以下行

<%@ WebService Language="C#" CodeBehind="TestService.asmx.cs" Class="MyWS.WS1" %>


我的问题如下:

有没有一种方法可以通过VS的重构方法在.asmx文件中重命名Web服务?如果没有,避免这种问题的最佳方法是什么?

谢谢。

最佳答案

VS重构功能通常仅限于代码名称(即var名称,函数名称,类名称),但是VS将MyWS.WS1中的Class="MyWS.WS1"视为字符串值,可以是任意值。 ReSharper插件具有自己的重构模块,可以搜索字符串引用,但是同样,您将需要手动验证更改是否正确并且应该应用。

手动重命名服务绝对可以,只需在解决方案范围内对WS1进行常规文本搜索,以确保您不会错过任何内容。

我对其进行了测试,看来它只在代码文件中搜索.net string类型的字符串。所以如果你有

var name = "WS1";


它将包含在“字符串”搜索结果中。

关于c# - 在Visual Studio中重构.asmx文件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25074361/

10-09 19:49