Save-AzureWebSiteLog Invoke-WebRequest错误

时间:2016-01-05 23:08:55

标签: azure azure-powershell kudu

我真的很接近完成我的工作,但它开始导致这个错误。

当我执行此

Save-AzureWebSiteLog -Name $WebSiteName -Output "C:\logs\error.zip"
  

Save-AzureWebSiteLog:传入的最大邮件大小配额   已超出消息(65536)。要增加配额,请使用   相应绑定元素上的MaxReceivedMessageSize属性。

所以,我搜索了解决方案,似乎很多人都有完全相同的问题。

https://azure.microsoft.com/en-us/blog/windows-azure-websites-online-tools-you-should-know-about/

感谢@Parth Sehgal,我试图通过使用powershell来解决问题

$username = "maiemai"
$password = "Password"
$base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(("{0}:{1}" -f $username,$password)))
$apiUrl = "https://wngphase2it.scm.azurewebsites.net/api/zip/LogFiles/"
$response = Invoke-WebRequest -Uri $apiUrl -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)} -Method GET 
try
{
$filename = [System.IO.Path]::GetFileName($response.BaseResponse.ResponseUri.OriginalString)
$filepath = [System.IO.Path]::Combine("c:\asdf\", "http1.zip")
$filestream = [System.IO.File]::Create($filepath)
$response.RawContentStream.WriteTo($filestream)
}
finally
{
$filestream.Close()
}

但我遇到了这个错误

  

Invoke-WebRequest:服务器错误       401 - 未授权:由于凭据无效,访问被拒绝。       您无权使用您提供的凭据查看此目录或页面。       在行:5 char:13       + $ response = Invoke-WebRequest -Uri $ apiUrl -Headers @ {Authorization =(" Basic {0}" ...       + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~           + CategoryInfo:InvalidOperation:(System.Net.HttpWebRequest:HttpWebRequest)[Invoke-WebRequest],   引发WebException           + FullyQualifiedErrorId:WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeWebRequestCommand       您无法在空值表达式上调用方法。       在行:11 char:1       + $ response.RawContentStream.WriteTo($ filestream)       + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~           + CategoryInfo:InvalidOperation:(:) [],RuntimeException           + FullyQualifiedErrorId:InvokeMethodOnNull

用户名和密码绝对正确,但仍然会导致此错误。

我该如何更改此行?

$response = Invoke-WebRequest -Uri $apiUrl -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)} -Method GET 

1 个答案:

答案 0 :(得分:3)

首先,在这种情况下,您的用户名不正确。

要使用Azure Kudu REST API检索Azure Web应用程序的压缩日志文件,您需要在发布配置文件中使用您的Web应用程序的 MSDeploy凭据 文件。

Azure网络应用的MSDeploy用户名的正确形式应为 $ {yoursitename}

您可以从新的Azure门户或Azure PowerShell命令获取Web应用程序的发布配置文件:Get-AzureRMWebAppPublishingProfile

我还修复了PowerShell脚本中的问题,我使用自己的网络应用进行了测试。

$username = "`$wngphase2it"
$password = "yourMSDeployUserPwd"
$base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(("{0}:{1}" -f $username,$password)))
$apiUrl = "https://wngphase2it.scm.azurewebsites.net/api/zip/LogFiles/"
$response = Invoke-WebRequest -Uri $apiUrl -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)} -Method GET 
try
{
$filename = [System.IO.Path]::GetFileName($response.BaseResponse.ResponseUri.OriginalString)
$filepath = [System.IO.Path]::Combine("c:\asdf\", "http1.zip")
$filestream = [System.IO.File]::Create($filepath)
$response.RawContentStream.WriteTo($filestream)
}
finally
{
$filestream.Close()
}

参考:Sample of using Kudu REST API with PowerShell

让我知道是否有助于解决您的问题。