将数据传递到 Web 服务获取 - 500(内部服务器错误)
Passing data to Web Service getting - 500 (Internal Server Error)
我在从 ReactJS 获取数据并将其传递到 ASP.NET Web 服务时遇到问题。
仅从数据库获取数据时其他获取功能有效。
为什么我会收到这些错误?我在这里做错了什么?
我相信它在我的 signUp
获取功能中。
那个响应我认为是fetch无法从服务器读取响应-
main.chunk.js:2417 POST http://localhost:50496/WebService.asmx/SignUp 500 (Internal Server Error)
SyntaxError: Unexpected token T in JSON at position 0 at JSON.parse (<anonymous>)
ReactJS
userData = {
fName: 'some',
lName: 'two one',
email: 'someonw@gmail.com',
password: 'se123456' }
我在 ReactJs 中的 fetch 函数 -
const signUp = (signUpData) => {
let data = {
firstName: signUpData.fName,
lastName: signUpData.lName,
emailAddress: signUpData.email,
password: signUpData.password,
};
fetch('http://localhost:50496/WebService.asmx/SignUp', {
body: JSON.stringify(data),
method: 'POST',
headers: {
'Content-Type': 'application/json; charset=UTF-8',
},
})
.then((response) => response.text())
.then(
(xml) =>
new window.DOMParser().parseFromString(xml, 'text/xml')
.documentElement.firstChild.textContent
)
.then((jsonStr) => JSON.parse(jsonStr))
.then((userData) => {
if (userData.d && userData.d.length > 0) {
setUser(userData);
} else {
console.log('error no data');
}
})
.catch((err) => {
console.log(err);
});
};
来自 Chrome 的错误 -
System.InvalidOperationException: Missing parameter : firstName.
System.Web.Services.Protocols.ValueCollectionParameterReader.Read(NameValueCollection collection)
System.Web.Services.Protocols.UrlParameterReader.Read(HttpRequest request)
System.Web.Services.Protocols.HttpServerProtocol.ReadParameters()
System.Web.Services.Protocols.WebServiceHandler.CoreProcessRequest()
SignUp
WebMethod 正在 WebService 中工作。
[WebMethod]
public string SignUp(string firstName, string lastName, string emailAddress, string password)
{
return BLL.SignUp(firstName, lastName, emailAddress, password);
}
我找到了我需要做的事情,
另一个错误是 -
InvalidOperationException: Only web services with the [ScriptService]
attribute in the class definition can be read from a script.
所以我向 WebService.cs 添加了属性 Class[ScriptService]
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[ScriptService]
并且由于这完全消除了在使用标准 SOAP(简单对象访问协议)Web 服务时必须解析 XML 的需要,
我删除了这些代码行 -
.then((response) => response.text())
.then(
(xml) =>
new window.DOMParser().parseFromString(xml, 'text/xml')
.documentElement.firstChild.textContent
)
.then((jsonStr) => JSON.parse(jsonStr))
并改成了这个-
.then((response) => response.json())
.then((userData) => {
if (userData.d && userData.d.length > 0) {
let user = JSON.parse(userData.d);
setUserData(user);
}
我在从 ReactJS 获取数据并将其传递到 ASP.NET Web 服务时遇到问题。
仅从数据库获取数据时其他获取功能有效。
为什么我会收到这些错误?我在这里做错了什么?
我相信它在我的 signUp
获取功能中。
那个响应我认为是fetch无法从服务器读取响应-
main.chunk.js:2417 POST http://localhost:50496/WebService.asmx/SignUp 500 (Internal Server Error)
SyntaxError: Unexpected token T in JSON at position 0 at JSON.parse (<anonymous>)
ReactJS
userData = {
fName: 'some',
lName: 'two one',
email: 'someonw@gmail.com',
password: 'se123456' }
我在 ReactJs 中的 fetch 函数 -
const signUp = (signUpData) => {
let data = {
firstName: signUpData.fName,
lastName: signUpData.lName,
emailAddress: signUpData.email,
password: signUpData.password,
};
fetch('http://localhost:50496/WebService.asmx/SignUp', {
body: JSON.stringify(data),
method: 'POST',
headers: {
'Content-Type': 'application/json; charset=UTF-8',
},
})
.then((response) => response.text())
.then(
(xml) =>
new window.DOMParser().parseFromString(xml, 'text/xml')
.documentElement.firstChild.textContent
)
.then((jsonStr) => JSON.parse(jsonStr))
.then((userData) => {
if (userData.d && userData.d.length > 0) {
setUser(userData);
} else {
console.log('error no data');
}
})
.catch((err) => {
console.log(err);
});
};
来自 Chrome 的错误 -
System.InvalidOperationException: Missing parameter : firstName. System.Web.Services.Protocols.ValueCollectionParameterReader.Read(NameValueCollection collection) System.Web.Services.Protocols.UrlParameterReader.Read(HttpRequest request) System.Web.Services.Protocols.HttpServerProtocol.ReadParameters() System.Web.Services.Protocols.WebServiceHandler.CoreProcessRequest()
SignUp
WebMethod 正在 WebService 中工作。
[WebMethod]
public string SignUp(string firstName, string lastName, string emailAddress, string password)
{
return BLL.SignUp(firstName, lastName, emailAddress, password);
}
我找到了我需要做的事情,
另一个错误是 -
InvalidOperationException: Only web services with the [ScriptService] attribute in the class definition can be read from a script.
所以我向 WebService.cs 添加了属性 Class[ScriptService]
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[ScriptService]
并且由于这完全消除了在使用标准 SOAP(简单对象访问协议)Web 服务时必须解析 XML 的需要,
我删除了这些代码行 -
.then((response) => response.text())
.then(
(xml) =>
new window.DOMParser().parseFromString(xml, 'text/xml')
.documentElement.firstChild.textContent
)
.then((jsonStr) => JSON.parse(jsonStr))
并改成了这个-
.then((response) => response.json())
.then((userData) => {
if (userData.d && userData.d.length > 0) {
let user = JSON.parse(userData.d);
setUserData(user);
}