我们在网络服务器场上提供了一个站点.该农场是处理加密的SSL Accellerator的幕后推手.这意味着我们的IIS服务器将所有传入连接视为http,即使用户都通过https连接到该站点.
我们开始使用ScriptManager的EnableCDN = true属性.在没有SSL Accellerator的开发环境中,CDN上的js文件的引用是使用https呈现的,在生产环境中,它们通过http不安全地呈现,导致js被阻止,"仅显示安全内容"错误.
如果没有手动更新scriptmanager中的所有脚本引用或通过模块重新编写HTML,有没有人知道强制脚本管理器通过https呈现其引用的方法?
编辑:
在做了一些反射器审查后,我不相信这是可能的.我已经将下面的hack放到了适当位置,但是这显然是脆弱的,因为它涉及访问私有字段.如果有人能看到更好的方式我会喜欢听到它.
var secureConnectionField = ScriptManager.GetType().GetField("_isSecureConnection", BindingFlags.Instance | BindingFlags.NonPublic);
if (secureConnectionField != null)
secureConnectionField.SetValue(ScriptManager, true);
Run Code Online (Sandbox Code Playgroud) 我想从JS调用静态服务器端方法,所以我决定在我的网站上使用ScriptManager控件.所以我有一个母版页,具有这样的结构:
<%@ Master Language="C#" AutoEventWireup="true" CodeBehind="TopLevelMasterPage.Master.cs"
Inherits="Likedrive.MasterPages.TopLevelMasterPage" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:fb="http://ogp.me/ns/fb#">
<head runat="server">
<title></title>
<script type="text/javascript">
function getGiftFileUrl() {
function OnSuccess(response) {
alert(response);
}
function OnError(error) {
alert(error);
}
PageMethods.GetGiftFileUrl("hero", 1024, 768, OnSuccess, OnError);
}
getGiftFileUrl();
</script>
</asp:ContentPlaceHolder>
</head>
<body>
<form id="form1" runat="server">
<asp:ScriptManager ID="ScriptManagerMain"
runat="server"
EnablePageMethods="true"
ScriptMode="Release"
LoadScriptsBeforeUI="true">
</asp:ScriptManager>
<asp:ContentPlaceHolder ID="MainContent" runat="server">
</asp:ContentPlaceHolder>
</form>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
但是当页面加载时,我有一个JS异常 - 未定义PageMethods.我认为该对象将被隐式创建,所以我可以在我的javascript中使用它.
我有一个ASP.NET应用程序,它使用ASP.NET AJAX(包括UpdatePanel)和由不同背景的几个开发人员编写的jQuery.
一些包含ScriptManager本身内的脚本<asp:ScriptManager><Scripts><asp:ScriptReference....,而其他包含在Page.ClientScript.RegisterClientScriptInclude后面的代码中,而其他<script src="">脚本直接包含脚本.
如果可能的话,我想整合到一种处理这种方式,但我不确定每种方式的优缺点是什么,哪种方式更受欢迎.
一个例子是:
protected override void Render(HtmlTextWriter writer)
{
Page.ClientScript.RegisterClientScriptInclude("jQuery", ResolveClientUrl("~/scripts/jquery/js/jquery-1.4.2.min.js"));
base.Render(writer);
}
Run Code Online (Sandbox Code Playgroud)
VS
<asp:ScriptManager ID="ScriptManager1" runat="server">
<Scripts>
<asp:ScriptReference Path="~/scripts/jquery/js/jquery-1.4.2.min.js" />
</Scripts>
</asp:ScriptManager>
Run Code Online (Sandbox Code Playgroud)
VS
<script src="Scripts/jQuery/js/jquery-1.4.2.min.js" type="text/javascript"></script>
Run Code Online (Sandbox Code Playgroud) 在正常情况下,两个.axd文件以正常速度加载到浏览器,即几百毫秒.通过查看chrome或其他调试工具中的瀑布图(网络图表),我可以看到它们与所有其他页面元素一起正常加载.
偶尔会出现两个文件需要大约一分钟才能加载的问题.以下是一些其他说明:
我正在使用ScriptManager的CDN版本,例如:
<asp:scriptreference name="MicrosoftAjax.js" path="http://ajax.microsoft.com/ajax/3.5/MicrosoftAjax.js"></asp:scriptreference>
看起来其他人有类似的问题,但没有解决:
WebResource.axd和ScriptResource.axd怪异的行为
WebResource.axd和ScriptResource.axd加载需要1分钟以上
题:
知道如何弄清楚导致这两个文件偶尔加载的原因是什么?
此外,是否有任何变通办法,例如预构建.axd文件或其他东西..?
我正在开发一个使用ASP.NET渲染HTML5的开源项目.在这里你可以看看:http: //asphtml5.codeplex.com/
现在我在更新面板时遇到问题,回复了"text"以外的类型的输入值.你可能知道,html 5引入了几种输入类型,例如'number','tel','search'等.现在,如果我渲染这样的控件,一切正常情况下工作正常,但如果我把它们放入UpdatePanel,没有值将被回发,值将被重置.
这是一小段产生相同错误的代码:
<asp:UpdatePanel runat="server" ID="UP">
<ContentTemplate>
<p>
Enter A Number:
<asp:TextBox runat="server" ID="Number2" type="number" />
</p>
<asp:Button Text="Submit" runat="server" ID="BtnSubmit" OnClick="BtnSubmit_Click" />
<p>
You entered :
<asp:Label Text="" ID="LblValue" runat="server" />
</p>
</ContentTemplate>
</asp:UpdatePanel>
Run Code Online (Sandbox Code Playgroud)
如果您在支持html 5的浏览器上测试此代码,请以Chrome为例,将显示Numeric Up-Down字段.但是如果单击提交按钮,它将丢失您输入的值.
这是事件处理程序的代码:
protected void BtnSubmit_Click(object sender, EventArgs e)
{
LblValue.Text = Number2.Text;
}
Run Code Online (Sandbox Code Playgroud)
我已经尝试过的是读取UpdatePanel,ScriptManager和ScriptManagerProxy类代码,没有找到.
我想我可能需要创建自己的UpdatePanel和/或ScriptManager类来使用.
任何人都可以帮助我,并告诉我在哪里检查.
我想使用jQuery的jGrowl插件(http://stanlemon.net/projects/jgrowl.html#samples)在页面上显示一些消息.为此,我调用ScriptManager.RegisterClientScriptBlock方法,如下所示:
ScriptManager.RegisterClientScriptBlock(this, typeof(Page), Guid.NewGuid().ToString(),
"$.jGrowl('" + message + "');", true);
Run Code Online (Sandbox Code Playgroud)
该代码在Firefox/Chrome/Safari中非常完美.但是在Internet Explorer中我没有看到通知,我没有收到任何Javascript错误.
我在Windows 7下工作,我有Internet Explorer 8 Beta(版本8.0.7000.0),我在兼容模式下有相同的"错误".
我怎么解决这个问题?
asp.net jquery plugins scriptmanager registerclientscriptblock
我已通过网络阅读但未找到解决以下问题的方法.我有这个示例页面(_ScriptManager.aspx),其中a ScriptManager,an UpdatePanel,a 在视图之间MultiView有两个Views和两个LinkButtons两个切换.第二个视图包含一些我想为(_ScriptManager.js)加载JavaScript文件的功能.
由于我不知道用户是否会访问视图2我不想为每个请求静态包含javascript文件.我只想在需要时加载它.所以我需要在异步回发期间包含脚本文件,这是我用ScriptManager.RegisterClientScriptInclude的.痛苦是:它不起作用.脚本包含在某种程度上不在客户端上执行,因此不能使用内部的javascript函数.更糟糕的是,我注册的脚本块ScriptManager.RegisterStartupScript在这种情况下不会被执行!这一切都非常恼人.有趣的是,包含脚本和脚本块确实通过异步回发(Fiddler是我的朋友:-))发送到客户端,并且还加载了脚本文件.但那时javascript似乎打破了......
有没有人有线索或知道报告的错误?
_ScriptManager.aspx:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="_ScriptManager.aspx.cs" Inherits="Frontend.Web._Tests.ScriptManagerTest" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title></title>
<script src="http://ajax.microsoft.com/ajax/jQuery/jquery-1.3.2.min.js"></script>
</head>
<body>
<form id="form1" runat="server">
<asp:ScriptManager runat="server" ID="scm"></asp:ScriptManager>
<asp:Label runat="server" ID="lbOut">Outside of UpdatePanel</asp:Label>
<div style="border: solid 1px red;">
<asp:UpdatePanel runat="server" ID="up" UpdateMode="Conditional">
<ContentTemplate>
<div>
<asp:LinkButton runat="server" ID="btnFirst">Show view 1</asp:LinkButton>
<asp:LinkButton runat="server" ID="btnSecond">Show view 2</asp:LinkButton>
</div>
<div>
<asp:MultiView …Run Code Online (Sandbox Code Playgroud) 我有一个ASP UpdatePanel来更新一个工作正常的gridview,现在我也想使用AjaxControlToolkit来处理那里的一些控件,但是当我运行时连接所有内容后我得到一个错误
"Only one instance of a ScriptManager can be added to the page."
Run Code Online (Sandbox Code Playgroud)
尽管我评论了ASP ScriptManager并使用了toolkitscriptmanager这一事实.但请注意我仍在使用ASP UpdatePanels.
<asp:ToolkitScriptManager ID="ToolkitScriptManager1" runat="server">
</asp:ToolkitScriptManager>
<!-- <asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>-->
Run Code Online (Sandbox Code Playgroud)
关于这里可能出现什么问题的任何想法?
有没有办法从JavaScript调用Web服务?我知道你可以添加一个脚本管理器来引入Web服务,但是一旦我做完了,我就无法弄清楚如何从javascript访问这些函数.
谢谢,
马特
我在我的ASP.NET网站上使用母版页,在我上传文件的一个内容页面中,需要比默认值90秒更长的超时值.对于其他内容页面,我想保留默认的超时值.
是否可以为特定内容页面设置超时?我检查了ScriptManagerProxy组件,但它没有AsyncPostBackTimeout属性.
scriptmanager ×10
asp.net ×9
asp.net-ajax ×3
javascript ×3
ajax ×2
c# ×2
updatepanel ×2
cdn ×1
html5 ×1
iis ×1
jquery ×1
master-pages ×1
plugins ×1
ssl ×1
timeout ×1
web-services ×1