Invoke-WebRequest .SV C, размещенный внутри Azure с использованием метода Post, вернет сообщение «Удаленный сервер возвратил ошибку: (404) Not Found» - PullRequest
0 голосов
/ 10 февраля 2020

Я создал веб-приложение asp. net, и внутри него я создал службу .SV C, затем развернул приложение в веб-приложении azure. Теперь, используя браузер, я могу вызвать файл .SV C и получить услугу wsdl следующим образом: -

enter image description here

, но внутри моего SharePoint , я регистрирую .SV C в качестве удаленного четного получателя, и SharePoint будет называть его .SV C, используя запрос POST. но это вызовет исключение.

, чтобы понять, почему SV C возвращает исключение на Post, я попытался вызвать .SV C с помощью Power Shell, и я получил такой результат: -

Использование сообщения: -

>>Invoke-WebRequest -Uri "https://****.azurewebsites.net/service1.svc" -Method Post
Invoke-WebRequest : The remote server returned an error: (404) Not Found.
At line:1 char:1
+ Invoke-WebRequest -Uri "https://****.azurewebsites.net/servic ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (System.Net.HttpWebRequest:HttpWebRequest) [Invoke-WebRequest], WebExc
   eption
    + FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeWebRequestCommand

Использование Get: -

>>Invoke-WebRequest -Uri "https://***.azurewebsites.net/service1.svc"
StatusCode        : 200
StatusDescription : OK

Итак, я Я не уверен, почему я не могу вызвать .SV C, используя метод POST.

вот web.config: -

<?xml version="1.0"?>
<!--
  For more information on how to configure your ASP.NET application, please visit
  https://go.microsoft.com/fwlink/?LinkId=169433
  -->
<configuration>
  <!--
    For a description of web.config changes see http://go.microsoft.com/fwlink/?LinkId=235367.

    The following attributes can be set on the <httpRuntime> tag.
      <system.Web>
        <httpRuntime targetFramework="4.7.2" />
      </system.Web>
  -->
  <system.web>
    <compilation debug="true" targetFramework="4.7.2"/>
    <httpRuntime targetFramework="4.5"/>
  </system.web>
  <system.codedom>
    <compilers>
      <compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=2.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:6 /nowarn:1659;1699;1701"/>
      <compiler language="vb;vbs;visualbasic;vbscript" extension=".vb" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.VBCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=2.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:14 /nowarn:41008 /define:_MYTYPE=\&quot;Web\&quot; /optionInfer+"/>
    </compilers>
  </system.codedom>
  <system.serviceModel>
    <behaviors>
      <serviceBehaviors>
        <behavior name="">
          <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true"/>
          <serviceDebug includeExceptionDetailInFaults="false"/>
        </behavior>
      </serviceBehaviors>
    </behaviors>
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true"/>
  </system.serviceModel>
  <appSettings file="custom.config">
    <add key="ClientId" value="**"/>
    <add key="ClientSecret" value="**"/>
  </appSettings>
</configuration>

, а вот .SV C услуга: -

 public class Service1 : IRemoteEventService
    {
        public SPRemoteEventResult ProcessEvent(SPRemoteEventProperties properties)
        {
            string correlationID = properties.CorrelationId.ToString();
            string siteUrl = properties.ItemEventProperties.WebUrl;
            int listItemID = properties.ItemEventProperties.ListItemId;
            Guid listID = properties.ItemEventProperties.ListId;

            Trace.TraceInformation("Calling ProcessOneWayEvent in ItemCreated. Correlation ID is {0}. Site url is {1}. List ID is {2}. List Item ID is {3}", correlationID, siteUrl, listID, listItemID);
            SPRemoteEventResult result = new SPRemoteEventResult();

            using (ClientContext context = Helpers.GetAppOnlyContext(siteUrl))
            {

                result.ChangedItemProperties.Add("Title", "After adding");
                result.Status = SPRemoteEventServiceStatus.Continue;


            }


        }
        public void ProcessOneWayEvent(SPRemoteEventProperties properties)

        {

            var prop = properties;

            var itemId = properties.ItemEventProperties.ListItemId;
            var listTitle = properties.ItemEventProperties.ListTitle;
            using (ClientContext clientContext = Helpers.GetAppOnlyContext(properties.ItemEventProperties.WebUrl))
            {
                var list = clientContext.Site.RootWeb.Lists.GetByTitle("12");
                var item = list.GetItemById(properties.ItemEventProperties.ListItemId);
                clientContext.Load(item);
                clientContext.ExecuteQuery();

                item["Title"] = item["Title"] + "test";
                item.Update();
                clientContext.ExecuteQuery();



            }
        }
    }
...