我的ASP.NET Web服务存在严重问题。我有一个Web服务方法,用于检查项目数据库中是否存在用户密码。我在asmx文件中编写了该方法来访问它。
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]
// To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line.
[System.Web.Script.Services.ScriptService]
public class CredentialsValidationService : System.Web.Services.WebService
{
[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public Boolean VerifyPasswordExistence(string email, string password)
{
try
{
EventLogHandlers.WriteToEventLog("Call from WEB SERVICE", EventLogEntryType.Warning);
Boolean isValid = PasswordVerifier.checkPasswordExistence_byLoginInfo(
UserInfoRetrievingClass.getUsernameByEmail(email), GlobalClass.getMD5Hash(MD5.Create(), password));
return isValid;
}
catch (Exception ex)
{
EventLogHandlers.WriteExceptionToEventLog(ex);
return false;
}
}
}
应该给我一个布尔值。当我在我的本地计算机(Windows 10)上测试它时,它正如我预期的那样正常工作。但是当我将它部署到我公司的服务器(Windows Server 2012)时,它并没有起作用。我曾尝试在服务器的本地主机上测试Web服务,但它也不起作用。我甚至关闭了服务器的Windows防火墙,放置了一个try..catch块(如上面的代码所示),然后尝试通过导航到Web方法页面来测试服务器本地主机上的Web服务(即./ credentialsvalidationservice.asmx?op = VerifyPasswordExistence),输入测试电子邮件和密码,然后按“调用”按钮。它不是显示预期的结果(真或假)(就像在我的本地电脑上一样),而是在新的浏览器选项卡中跳转到Web服务的描述页面/credentialsvalidationservice.asmx。我检查了事件日志,没有任何内容。它没有给我任何错误细节来指出出了什么问题。事件日志中绝对没有任何内容。
为您提供有关我的项目的更多信息。它是在Visual Studio 2013和.NET Framework 4.5.1上编写的。我的dev pc和我公司的服务器上的.NET Framework版本是4.5.1。我的dev pc(Windows 10)上的IIS版本是10,而服务器上的IIS版本是8.5。我想我是否需要配置服务器或在服务器上安装任何插件才能使这个Web服务工作?请帮忙。感谢。
更新:最后我找到了问题的根本原因。我创建的URL重写规则用于将网站的所有网址转换为小写。它甚至将Web方法的名称转换为小写并导致问题,因为方法名称区分大小写。我只是暂时禁用了重写规则以使服务正常运行。该服务位于Web应用程序根目录的路径〜/ Services中。我想我必须找到一些方法来更改规则,以便它只影响aspx文件,但是将所有asmx文件(特别是在Services文件夹中)保留为低级大小。