我想要 POST 一个参数,即base64to webservice,但它不起作用。
string postData = "base64=hySGNg22yX0AIjNQvNJw0xHEbi32NH+iRVKDkbOmUiKpxW0/S6rUgfLmSa527Y8zZ3GmEzfXMB8ry8fH5GjGeJFGqFxDC4A2hLlvIFzyiDeUCqloGDAJoOLa8Jnif1C8nwRte0GNCRM5RXkshLKZP2itZclgDCYz6OgAF7oLNluoB44cZ3AgF1Q8hVgME8LeqgOqxsIzTt3Xn+96j7zp/wA=";
byte[] dataArray = Encoding.Default.GetBytes(postData);
HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(ServerPage);
request.Method = "POST";
request.ContentLength = dataArray.Length;
request.ContentType = "application/x-www-form-urlencoded";
Stream dataStream = null;
try
{
dataStream = request.GetRequestStream();
}
catch (Exception)
{
}
dataStream.Write(dataArray, 0, dataArray.Length);
dataStream.Close();
Run Code Online (Sandbox Code Playgroud)
但参数requestHeader更改为:
base64=hySGNg22yX0AIjNQvNJw0xHEbi32NH%2BiRVKDkbOmUiKpxW0%2FS6rUgfLmSa527Y8zZ3GmEzfXMB8ry8fH5GjGeJFGqFxDC4A2hLlvIFzyiDeUCqloGDAJoOLa8Jnif1C8nwRte0GNCRM5RXkshLKZP2itZclgDCYz6OgAF7oLNluoB44cZ3AgF1Q8hVgME8LeqgOqxsIzTt3Xn%2B96j7zp%2FwA%3D
所以WebService收到了错误的参数:
[WebMethod]
public string GenerateOrder(string base64)
{
byte[] buffer = Convert.FromBase64String(base64); //Exception here
}
Run Code Online (Sandbox Code Playgroud) 我正在使用 Jquery Ajax 从 aspx 页面调用 WebMethod。这是我的代码
$(document).ready(function () {
$("#btnshow").click(function () {
$.ajax({
type: "POST",
url: "example.aspx/showData",
data: "{}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (msg) {
$("#Result").text(msg.d);
}
});
});
});
Run Code Online (Sandbox Code Playgroud)
aspx.cs 页面上的代码:
[System.Web.Services.WebMethod()]
[System.Web.Script.Services.ScriptMethod()]
public static List<LandmarkList> showData()
{
LandmarkList ObjLL = new LandmarkList();
return ObjLL.GetDataList();
}
Run Code Online (Sandbox Code Playgroud)
我的问题是什么是保护此 Web 方法的专业方法?保护 Web 方法的可能方法是什么,以便用户不会从客户端调试工具复制该 url 并使用它。
注意:这些是打开的页面,用户不需要登录这些页面。
更新:我想让某人在不实际访问我的网站的情况下继续使用我的网络服务变得更加困难。
我有一个带有文件输入和一个按钮的表单,当我按下按钮时,文件应该转到服务器端。
当我向服务器发送文件时,ajax 响应成功,永远不要停在我使用的 c# webmethod 断点处。我做错了什么?
表单:(Default.aspx)
<form id="form1" runat="server" enctype="multipart/form-data">
<div align="center" class="divBody">
<div id="controlHost">
<div id="outerPanel">
<table width="100%" cellpadding="2" cellspacing="5">
<tr align="left">
<td colspan="2">
<span class="message">Seleccione el archivo que desea subir</span>
</td>
</tr>
<tr align="left">
<td valign="top">
<input type="file" id="FileInput" multiple="false" class="fileInput" />
</td>
<td align="right">
<input type="button" id="btnUpload" name="btnUpload" value="Upload" onclick="sendFile();" class="button" />
</td>
</tr>
</table>
</div>
</div>
</div>
</form>
Run Code Online (Sandbox Code Playgroud)
脚本:(默认.aspx)
function sendFile() {
var data = new FormData();
var file = $("#FileInput")[0].files[0];
data.append("name", file.name);
data.append("size", file.size); …Run Code Online (Sandbox Code Playgroud) 我有大量的[WebMethod]整个应用程序,我希望我所有的[WebMethod]都是异步的。我[WebMethod]用 async 和 await 关键字装饰了我所有的签名,然后运行我的应用程序。它没有按预期进行。假设我有以下代码
背后的代码
[WebMethod]
public static async Task<List<XXX>> GetXXX()
{
return await new BusinessLogic().GetXXX().ConfigureAwait(false);
}
Run Code Online (Sandbox Code Playgroud)
业务层
internal async Task<List<XXX>> GetXXX()
{
var obj = await objDAL.GetXXX().ConfigureAwait(false);
List<XXX> listDO = new List<XXX>();
foreach (var item in obj)
{
listDO.Add(new Countries
{
XXXName = item.name,
XXXID = item.id
});
}
return listDO;
Run Code Online (Sandbox Code Playgroud)
objDAL.GetXXX
internal async Task<List<tblXXX>> GetXXX()
{
using (ABCEntities ctx = new ABCEntities())
{
return await ctx.tblXXX.ToListAsync().ConfigureAwait(false);
}
}
Run Code Online (Sandbox Code Playgroud)
我已经将调试器放在上面代码到达的整个路径中return await …
我在C#中有一个通过Jquery ajax方法调用的Web方法.Web方法应该将一个对象返回给将用于填充的Jquery.
我试过返回一个JsonResult对象,实际对象似乎没什么用!我没有使用MVC(不幸的是).有没有办法可以从我的web方法返回一个可以由我的AJAX方法使用的对象?
这是我的JQuery AJAX方法的链接
http://pastebin.com/tRSaY5rG
http://pastebin.com/WajXyPMM
谢谢!!
我一直在看这个问题,看不出问题出在哪里.任何帮助是极大的赞赏.
[WebMethod(true)]
[ScriptMethod(UseHttpGet = true, ResponseFormat = ResponseFormat.Json)]
public static string neighbourhoodTeam(string force, string neighbourhood)
{
//StreamManager streamMan = new StreamManager();
//return streamMan.StreamManagerUrlHandler("http://policeapi2.rkh.co.uk/api/" + force + "%2F" + neighbourhood + "%2F" + "people");
return neighbourhood + force;
}
Run Code Online (Sandbox Code Playgroud)
jQuery的:
function getOfficers(force, neighbourhood) {
$.ajax({
type: "GET",
contentType: "application/json; charset=utf-8",
url: "../police/crimerequest.aspx/neighbourhoodTeam",
data: JSON.stringify({ "force": force, "neighbourhood": neighbourhood }),
dataType: "json",
success: function (data) {
var results = $.parseJSON(data.d);
$.each(results, function (i) {
businessCards.push(generateOfficerBusinessCard(
results[i].name,
results[i].rank,
results[i].contact_details.mobile,
results[i].contact_details.tel,
results[i].contact_details.email))
});
PoliceApp.businessCardsPlaceHolder.html(businessCards.toString()); …Run Code Online (Sandbox Code Playgroud) 在我的应用程序中,我从JavaScript调用WebMethod,我试图重定向到某个页面:
[WebMethod]
public string Logout() {
if (User.Identity.IsAuthenticated) {
HttpContext.Current.Response.Redirect("~/Pages/Logout.aspx");
}
return "";
}
Run Code Online (Sandbox Code Playgroud)
aspx页面:
<input onclick="callLogout();" id="btn" type="button" value="Click Me" />
<asp:ScriptManager ID="ScriptManager" runat="server">
<Services>
<asp:ServiceReference Path="~/WebServices/EMSWebService.asmx" />
</Services>
</asp:ScriptManager>
<script type="text/javascript">
function callLogout() {
EMSApplication.Web.WebServices.EMSWebService.Logout(OnComplete, OnError);
}
function OnComplete(result) {
alert(result);
}
function OnError(result) {
alert(result.get_message());
}
</script>
Run Code Online (Sandbox Code Playgroud)
我得到了:
mscorlib.dll中出现'System.Threading.ThreadAbortException'类型的第一次机会异常
mscorlib.dll中出现"System.Threading.ThreadAbortException"类型的异常,但未在用户代码中处理
在我的VS2010的输出窗口中.
为什么我会收到此异常,如何解决此问题?
我正在ASP.NET页内实现Web方法以执行异步调用。现在,我需要了解Web应用程序的物理应用程序路径。
我通常使用Request.PhysicalApplicationPath,但是如何从Web方法内部获取相同的信息?
注意否Request或Server属性在Web方法内可用...
当我尝试通过其他问题学习时,仍然无法让它发挥作用
到目前为止,这是我的代码,试图尽可能彻底.
活动(点击)
var resluts = []; //its a collections of id's - list items of unsorted list as strings
$('#next').click(function() {
var RLength = resluts.length;
alert(resluts);
});?
Run Code Online (Sandbox Code Playgroud)
ajax POST
function UbpdateSecondStage(arr) {
var WebMethod ="GetSecondStageData";
var page ="Default.aspx/";
var target = page + WebMethod;
var SendParameters = Sys.Serialization.JavaScriptSerializer.serialize(arr);
jQueryAjxUpdt(target, SendParameters);
}
function jQueryAjxUpdt(targetUrl, SentPars) {
$.ajax({
type: 'POST',
url: targetUrl,
data: {
'sentobj':SentPars
},
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (data) {
//alert(data);
}
});
}
Run Code Online (Sandbox Code Playgroud)
C#
[WebMethod] …Run Code Online (Sandbox Code Playgroud) 现在我做了一些研究.我需要将我从ajax调用中检索到的一些数据存储到我的页面上的WebMethod中,然后我可以随时将其重新拉回来.
我一开始认为ViewState是最好的选择.遗憾的是,您无法以非静态方法的方式引用它.即使我将页面的实例存储在ViewState中,我相信它会在方法结束时解除实例化,从而破坏我保存的任何数据.
我需要这些数据用于我在其他WebMethods中进行的数据库调用.
我的aspx页面的C#代码隐藏的基本方法如下所示:
[WebMethod]
[ScriptMethod]
public static string populateModels(string[] makeIds)
{
}
Run Code Online (Sandbox Code Playgroud)
因此,例如,我需要保存所选的品牌以便从未来的数据库调用中获取.由于我的大多数盒子都是从数据库中过滤和提取的.
此代码适用于在静态WebMethods中的SessionState中检索和存储数据.
[WebMethod(EnableSession = true)]
[ScriptMethod]
public static string populateYears(string[] modelIds)
{
HttpContext.Current.Session["SelectedModels"] = modelIds;
string[] makeids = (string[])HttpContext.Current.Session["SelectedMakes"];
}
Run Code Online (Sandbox Code Playgroud) webmethod ×10
asp.net ×8
c# ×8
ajax ×4
jquery ×3
web-services ×2
.net ×1
asynchronous ×1
base64 ×1
exception ×1
file ×1
javascript ×1
response ×1
viewstate ×1
webforms ×1