我已经在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/