我有 2 个项目,一个是 Web 服务 Asp.Net 第二个是 Web 应用程序 Asp.Net 当我尝试在同一解决方案中运行两个项目时,它可以完美运行,但是当我们单独运行项目时(在本地主机上但带有端口号,我收到错误)。我很难解决这个问题,但没有完美的解决方案。
网络服务服务器:
[WebMethod]
public void CheckUserNameAndGetNew(string UserName)
{
bool IsUserNameAvailable = true;
DAL dal = new DAL();
UserNameCheck objBel = new UserNameCheck();
//IsUserNameAvailable = dal.CheckUserNameDAL(UserName);
while(!dal.CheckUserNameDAL(UserName)) // get in if UserName already exist in database
{
Random myRandomNum =new Random();
int myRandomNumber = myRandomNum.Next(1, 100);
UserName = UserName + myRandomNumber;
IsUserNameAvailable = false;
}
objBel.IsUserNameAvailable = IsUserNameAvailable;
objBel.UserName = UserName;
JavaScriptSerializer js = new JavaScriptSerializer();
Context.Response.Write(js.Serialize(objBel));
}
网络服务器:
$.ajax({
url: "http://localhost:49839/WebService1.asmx/CheckUserNameAndGetNew",
method: "Post",
data: { UserName: txtUserName },
dataType: "json",
success: function (data) {
debugger;
var AvailableMsg = $('#AvailableMsg');
var Availablelbl = $('#Availablelbl');
var AvailableUserName = $('#AvailableUserName');
if (data.IsUserNameAvailable) {
AvailableMsg.text(txtUserName + ' User Name Available');
Availablelbl.text('');
AvailableUserName.text('');
AvailableMsg.css('color', 'Green');
}
else {
AvailableMsg.text(txtUserName + ' User Name is not Available');
Availablelbl.text('Available: ');
AvailableUserName.text(data.UserName).click(function () {
$('#txtUserName').val($(this).text());
AvailableMsg.text('');
Availablelbl.text('');
AvailableUserName.text('');
});
AvailableMsg.css('color', 'red');
Availablelbl.css('color', 'Gray');
AvailableUserName.css('color', 'green');
}
},
error: function (err) {
debugger;
}
});
客户端检查控制台上的错误:
XMLHttpRequest 无法加载 http://localhost:49839/WebService1.asmx/CheckUserNameAndGetNew。不 "访问控制允许源"标头存在于请求的上 资源。因此不允许使用原产地"http://localhost:65360" 访问。
您还需要允许 Web 服务服务器提供跨域数据(也意味着其他人的调用请求-响应)。因此,您需要在Web服务服务器的web.config中流动设置。
<system.webServer>
<httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Origin" value="*" />
</customHeaders>
</httpProtocol>
</system.webServer>