我创建了一个C#WebMethod
$http({
url: 'default.aspx/GetPageHtml?file=' + JSON.stringify(selectedFile) + '&page=' + itemNumber,
method: "GET",
headers: { 'Content-Type': 'application/json' },
data:''
}).then(function successCallback(response) {
return response.d;
}, function errorCallback(response) {
});
我可以调用它,当我添加标题Content-Type:'application / Json'时,使用Ajax,angular,Postman可以正常工作。这是示例HTTP请求,它正常工作。
<iframe ng-src="default.aspx/GetPageHtml?file=candy.pdf&page=1" style="height: 150px;"></iframe>
但是当我调用与iframe ng-src相同的方法时,它无效。
foreach ($account in Get-AzureRMAutomationAccount){
Get-AzureRmAutomationRunbook -ResourceGroupName $account.ResourceGroupName -AutomationAccountName $account.AutomationAccountName
}
我通过Google Chrome的开发者工具检查了这个Http调用,发现Content-Type在那里是'text / html',这就是为什么它没有打到我的WebMethod。请看这个截图。 Iframe ng-src
我在谷歌和Stackoverflow上进行了很多调查,但我找不到我需要提供Content-Type的原因:'application / json'来调用我的WebMethod
答案 0 :(得分:0)
我进一步调查了我的问题,并试图找到其他方法,我想出了一个解决方案。我创建了一个名为GetDocumentHtml.aspx
的新WebForm,并在Page_Load
方法中进行操作,我之前在GetPageHtml
WebMethod
进行了操作。
现在在iframe
ng-src
我正在提供此网址
/GetDocumentHtml.aspx?file=calibre.docx&page=1
而不是
default.aspx/GetPageHtml?file=candy.pdf&page=1
在Page_Load方法中,我使用以下代码获取网址参数
var file = GetValueFromQueryString("file");
var page =Convert.ToInt32(GetValueFromQueryString("page"));
GetValueFromQueryString方法
private String GetValueFromQueryString(String value)
{
try
{
return Request.QueryString[value].ToString();
}
catch (System.Exception exp)
{
return String.Empty;
}
}
我希望这些信息对某人有所帮助。谢谢。