远程服务器返回错误:(403)禁止使用Google Maps

时间:2018-08-28 15:31:07

标签: c# iis model-view-controller google-maps-api-3

我继承了用c#/ MVC(.NET 4.0)编写的Web应用程序

唯一麻烦的页面是访问Google地图的页面。它一直在给我可怕的403错误。我应该提到的是,发生了相同的问题,它已经工作了好几个月没有问题,而且突然之间就开始发生。可以想象Windows Update可能已经启动了此问题。我是否可以修改任何IIS设置或用户权限,以防止发生此问题。我尝试暂时向所有人用户授予完全访问权限,但这没什么区别。这是我可以提供的所有详细信息:

[WebException: The remote server returned an error: (403) Forbidden.]
   System.Net.HttpWebRequest.GetResponse() +1646
   System.Xml.XmlDownloadManager.GetNonFileStream(Uri uri, ICredentials credentials, IWebProxy proxy, RequestCachePolicy cachePolicy) +129
   System.Xml.XmlUrlResolver.GetEntity(Uri absoluteUri, String role, Type ofObjectToReturn) +86
   System.Xml.XmlTextReaderImpl.FinishInitUriString() +90
   System.Xml.XmlReaderSettings.CreateReader(String inputUri, XmlParserContext inputContext) +99
   System.Xml.Linq.XDocument.Load(String uri, LoadOptions options) +84
   GoogleMaps.LocationServices.GoogleLocationService.GetLatLongFromAddress(String address) +165
   URS.Web.Controllers.TherapistController.GetPatientLatLong(String address) +70
   URS.Web.Controllers.TherapistController.ShowReferral(Int32 RefId, Int32 Disciplineid, Int32 ReferalDetailsId, String pagenumber) +603
   lambda_method(Closure , ControllerBase , Object[] ) +307
   System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext, IDictionary`2 parameters) +229
   System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary`2 parameters) +35
   System.Web.Mvc.Async.AsyncControllerActionInvoker.<BeginInvokeSynchronousActionMethod>b__39(IAsyncResult asyncResult, ActionInvocation innerInvokeState) +39
   System.Web.Mvc.Async.WrappedAsyncResult`2.CallEndDelegate(IAsyncResult asyncResult) +71
   System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethod(IAsyncResult asyncResult) +42
   System.Web.Mvc.Async.AsyncInvocationWithFilters.<InvokeActionMethodFilterAsynchronouslyRecursive>b__3f() +72
   System.Web.Mvc.Async.<>c__DisplayClass48.<InvokeActionMethodFilterAsynchronouslyRecursive>b__41() +385
   System.Web.Mvc.Async.<>c__DisplayClass48.<InvokeActionMethodFilterAsynchronouslyRecursive>b__41() +385
   System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethodWithFilters(IAsyncResult asyncResult) +42
   System.Web.Mvc.Async.<>c__DisplayClass2b.<BeginInvokeAction>b__1c() +38
   System.Web.Mvc.Async.<>c__DisplayClass21.<BeginInvokeAction>b__1e(IAsyncResult asyncResult) +185
   System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeAction(IAsyncResult asyncResult) +38
   System.Web.Mvc.Controller.<BeginExecuteCore>b__1d(IAsyncResult asyncResult, ExecuteCoreState innerState) +29
   System.Web.Mvc.Async.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult) +67
   System.Web.Mvc.Controller.EndExecuteCore(IAsyncResult asyncResult) +52
   System.Web.Mvc.Async.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult) +36
   System.Web.Mvc.Controller.EndExecute(IAsyncResult asyncResult) +38
   System.Web.Mvc.MvcHandler.<BeginProcessRequest>b__5(IAsyncResult asyncResult, ProcessRequestState innerState) +43
   System.Web.Mvc.Async.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult) +67
   System.Web.Mvc.MvcHandler.EndProcessRequest(IAsyncResult asyncResult) +38
   System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +607
   System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +134

在我的Controller文件中,唯一使用Google Maps的方法如下:

private Dictionary<string, double> GetPatientLatLong(string address)
    {
        Dictionary<string, double> latlong = new Dictionary<string, double>();

        var Patientadd = address;

        var locationService = new GoogleLocationService();
        var point = locationService.GetLatLongFromAddress(Patientadd);
        if (point != null)
        {
            var latitude = point.Latitude;
            var longitude = point.Longitude;
            latlong.Add("latitude", latitude);
            latlong.Add("longitude", longitude);
        }
        else
        {
            latlong.Add("latitude", 0);
            latlong.Add("longitude", 0);
        }
        return latlong;

    }

在.cshtml文件中,该文件写在顶部

<script src="https://maps.googleapis.com/maps/api/js?key={thekey}"></script>

其次:

<script>

google.maps.event.addDomListener(window, 'load', initialize);

  function initialize() {

        var markerArray = [];
        var infoWindow = new google.maps.InfoWindow();
        var miles = @Model.TherapRadius;
        var myLatlng1 = new google.maps.LatLng(@Model.TherapLat, @Model.TherapLong);
        var myLatlng2 = new google.maps.LatLng(@Model.patientLat, @Model.patientLong);
        var mapOptions = {
            center: new google.maps.LatLng(29.760193,-95.369390),
            zoom:10,
        }
        var map = new google.maps.Map(document.getElementById('map-canvas'), mapOptions);
        var geocoder = new google.maps.Geocoder();
        var marker1;

        for (var i = 0; i < myModel.coveringAreas.length; i++) {

            var markerloop = new google.maps.Marker({
                position:  new google.maps.LatLng( myModel.coveringAreas[i].Latitude, myModel.coveringAreas[i].Longitude),
                map: map,
                title: 'Therapist Location: ' + myModel.coveringAreas[i].TherapistName
            });
            var markerModel = myModel.coveringAreas[i];

            markerArray.push( { marker :  markerloop, markerModl : markerModel });
        }

        var marker2 = new google.maps.Marker({
            position: myLatlng2,
            map: map,
            title: 'Patient Location',
            color:"Blue",
            icon:"http://www.google.com/intl/en_us/mapfiles/ms/micons/blue-dot.png"
        });

        marker2.setMap(map);

        for (i = 0; i < markerArray.length; i++) {
            addMarkerDetails(i);
        }
}
        function addMarkerDetails(i)
        {
            var listenerMarker = markerArray[i].marker;
            var therapistDetails = markerArray[i].markerModl;
            google.maps.event.addListener(listenerMarker, 'click', function(e) {
                var clickText = "<div id='infoDiv'>" +
                               "<h3>Therapist Name:</h3>" + therapistDetails.TherapistName + "" +
                               //"<h3>Address:</h3>" + therapistDetails.Location +
                               "<div>" ;
                infoWindow.setContent(clickText);
                infoWindow.open(listenerMarker.get('map'), listenerMarker);
            });

            google.maps.event.addListener(marker2, 'click', function(e) {

                var clickText = "<div id='infoDiv'>" +
                                "<h3>Patient Name:</h3>" + '@Model.LastName' +", "+ '@Model.FirstName' + "" +
                               "<h3>Address:</h3>" +  '@Model.PatientFullAddress'+
                               "<div>" ;

                    infoWindow.setContent(clickText);
                    infoWindow.open(map, this);

                });
            }

            var boundsListener = google.maps.event.addListener((map), 'bounds_changed', function(event) {
                this.setZoom(10);
                google.maps.event.removeListener(boundsListener);
            });

        }

</script>

这是事件查看器中的条目:

Log Name:      Application
Source:        ASP.NET 4.0.30319.0
Date:          08/28/18 9:58:55 AM
Event ID:      1309
Task Category: Web Event
Level:         Warning
Keywords:      Classic
User:          N/A
Computer:      MyWeb
Description:
Event code: 3005 
Event message: An unhandled exception has occurred. 
Event time: 8/28/2018 9:58:55 AM 
Event time (UTC): 8/28/2018 2:58:55 PM 
Event ID: 755907cfe9ef41ae875f99ef89aa9abb 
Event sequence: 658 
Event occurrence: 6 
Event detail code: 0 

Application information: 
    Application domain: /LM/W3SVC/2/ROOT-1-131799399080579812 
    Trust level: Full 
    Application Virtual Path: / 
    Application Path: C:\inetpub\wwwroot\MYWEB\ 
    Machine name: MYWEB 

Process information: 
    Process ID: 2012 
    Process name: w3wp.exe 
    Account name: IIS APPPOOL\MYWEB 

Exception information: 
    Exception type: WebException 
    Exception message: The remote server returned an error: (403) Forbidden.
   at System.Net.HttpWebRequest.GetResponse()
   at System.Xml.XmlDownloadManager.GetNonFileStream(Uri uri, ICredentials credentials, IWebProxy proxy, RequestCachePolicy cachePolicy)
   at System.Xml.XmlUrlResolver.GetEntity(Uri absoluteUri, String role, Type ofObjectToReturn)
   at System.Xml.XmlTextReaderImpl.FinishInitUriString()
   at System.Xml.XmlReaderSettings.CreateReader(String inputUri, XmlParserContext inputContext)
   at System.Xml.Linq.XDocument.Load(String uri, LoadOptions options)
   at GoogleMaps.LocationServices.GoogleLocationService.GetLatLongFromAddress(String address)
   at MYWEB.Web.Controllers.TherapistController.GetPatientLatLong(String address)
   at MYWEB.Web.Controllers.TherapistController.GetPatientCoordinates(Int32 id)
   at MYWEB.Web.Controllers.TherapistController.GetAllTherapist(DataSourceRequest request, Int32 disciplineId, Int32 refDetailId)
   at lambda_method(Closure , ControllerBase , Object[] )
   at System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext, IDictionary`2 parameters)
   at System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary`2 parameters)
   at System.Web.Mvc.Async.AsyncControllerActionInvoker.<BeginInvokeSynchronousActionMethod>b__39(IAsyncResult asyncResult, ActionInvocation innerInvokeState)
   at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResult`2.CallEndDelegate(IAsyncResult asyncResult)
   at System.Web.Mvc.Async.AsyncControllerActionInvoker.AsyncInvocationWithFilters.<InvokeActionMethodFilterAsynchronouslyRecursive>b__3f()
   at System.Web.Mvc.Async.AsyncControllerActionInvoker.AsyncInvocationWithFilters.<>c__DisplayClass48.<InvokeActionMethodFilterAsynchronouslyRecursive>b__41()
   at System.Web.Mvc.Async.AsyncControllerActionInvoker.AsyncInvocationWithFilters.<>c__DisplayClass48.<InvokeActionMethodFilterAsynchronouslyRecursive>b__41()
   at System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass33.<BeginInvokeActionMethodWithFilters>b__32(IAsyncResult asyncResult)
   at System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass21.<>c__DisplayClass2b.<BeginInvokeAction>b__1c()
   at System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass21.<BeginInvokeAction>b__1e(IAsyncResult asyncResult)
   at System.Web.Mvc.Controller.<BeginExecuteCore>b__1d(IAsyncResult asyncResult, ExecuteCoreState innerState)
   at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult)
   at System.Web.Mvc.Controller.EndExecuteCore(IAsyncResult asyncResult)
   at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult)
   at System.Web.Mvc.MvcHandler.<BeginProcessRequest>b__5(IAsyncResult asyncResult, ProcessRequestState innerState)
   at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult)
   at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
   at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)



Request information: 
    Request URL: http://ursuatweb.southcentralus.cloudapp.azure.com/Therapist/GetAllTherapist/?disciplineId=1&refDetailId=1805 
    Request path: /Therapist/GetAllTherapist/ 
    User host address: 75.107.154.176 
    User: Richardmartin 
    Is authenticated: True 
    Authentication Type: cookie 
    Thread account name: IIS APPPOOL\MYWEB 

Thread information: 
    Thread ID: 22 
    Thread account name: IIS APPPOOL\MYWEB 
    Is impersonating: False 
    Stack trace:    at System.Net.HttpWebRequest.GetResponse()
   at System.Xml.XmlDownloadManager.GetNonFileStream(Uri uri, ICredentials credentials, IWebProxy proxy, RequestCachePolicy cachePolicy)
   at System.Xml.XmlUrlResolver.GetEntity(Uri absoluteUri, String role, Type ofObjectToReturn)
   at System.Xml.XmlTextReaderImpl.FinishInitUriString()
   at System.Xml.XmlReaderSettings.CreateReader(String inputUri, XmlParserContext inputContext)
   at System.Xml.Linq.XDocument.Load(String uri, LoadOptions options)
   at GoogleMaps.LocationServices.GoogleLocationService.GetLatLongFromAddress(String address)
   at MYWEB.Web.Controllers.TherapistController.GetPatientLatLong(String address)
   at MYWEB.Web.Controllers.TherapistController.GetPatientCoordinates(Int32 id)
   at MYWEB.Web.Controllers.TherapistController.GetAllTherapist(DataSourceRequest request, Int32 disciplineId, Int32 refDetailId)
   at lambda_method(Closure , ControllerBase , Object[] )
   at System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext, IDictionary`2 parameters)
   at System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary`2 parameters)
   at System.Web.Mvc.Async.AsyncControllerActionInvoker.<BeginInvokeSynchronousActionMethod>b__39(IAsyncResult asyncResult, ActionInvocation innerInvokeState)
   at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResult`2.CallEndDelegate(IAsyncResult asyncResult)
   at System.Web.Mvc.Async.AsyncControllerActionInvoker.AsyncInvocationWithFilters.<InvokeActionMethodFilterAsynchronouslyRecursive>b__3f()
   at System.Web.Mvc.Async.AsyncControllerActionInvoker.AsyncInvocationWithFilters.<>c__DisplayClass48.<InvokeActionMethodFilterAsynchronouslyRecursive>b__41()
   at System.Web.Mvc.Async.AsyncControllerActionInvoker.AsyncInvocationWithFilters.<>c__DisplayClass48.<InvokeActionMethodFilterAsynchronouslyRecursive>b__41()
   at System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass33.<BeginInvokeActionMethodWithFilters>b__32(IAsyncResult asyncResult)
   at System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass21.<>c__DisplayClass2b.<BeginInvokeAction>b__1c()
   at System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass21.<BeginInvokeAction>b__1e(IAsyncResult asyncResult)
   at System.Web.Mvc.Controller.<BeginExecuteCore>b__1d(IAsyncResult asyncResult, ExecuteCoreState innerState)
   at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult)
   at System.Web.Mvc.Controller.EndExecuteCore(IAsyncResult asyncResult)
   at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult)
   at System.Web.Mvc.MvcHandler.<BeginProcessRequest>b__5(IAsyncResult asyncResult, ProcessRequestState innerState)
   at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult)
   at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
   at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)

0 个答案:

没有答案