WCF Web 服务"POST [OperationContract]"在 IIS 上发布时返回"Endpoint not found"



我创建了一个WCF Web Service。其中有一些带有GET请求的[操作合同]和一个带有POST请求的[操作合同]。问题是,POST [OperationContract] 在 localhost 上工作正常,但是当在 IIS 上发布时,它会返回"找不到端点"错误。

这是我的 WCF 服务接口

接口 IService1.cs

[OperationContract]
[WebInvoke(Method = "POST", UriTemplate = "UploadImage", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Wrapped)]
string UploadImage(Stream stream);

或(可选)

当我用这个网址调用这个POST[操作合同]时:http://localhost:5031/Service1.svc/UploadImage,那么它就可以正常工作了。

当我用 URL: http://IP/Wcfservice1/Service1.svc/UploadImage 调用它时,它返回"找不到端点">


这是我的接口实现:

IService1.svc.cs

public class Service : IService
{
public string UploadImage(Stream stream)
{
Random r = new Random();
int index = r.Next(0, 99);
System.Drawing.Bitmap imag = new System.Drawing.Bitmap(stream);
byte[] imagedata = ImageToByte(imag);
//Write code here to Save byte code to database..  
stream.Read(imagedata, 0, imagedata.Length);
FileStream f = new FileStream(@"E:StudiesUploaded ImagesTestProfileImage" + index + ".jpg", FileMode.OpenOrCreate);
f.Write(imagedata, 0, imagedata.Length);
f.Close();
stream.Close();
return "Success";
}
}
public static byte[] ImageToByte(System.Drawing.Image img)
{
ImageConverter converter = new ImageConverter();
return (byte[])converter.ConvertTo(img, typeof(byte[]));

}

在我的 web.config 中,我有以下内容:

网络.config

<?xml version="1.0"?>
<configuration>
<appSettings>
<add key="aspnet:UseTaskFriendlySynchronizationContext" value="true" />
</appSettings>
<system.web>
<compilation debug="true" targetFramework="4.5" />
<httpRuntime targetFramework="4.5" />
</system.web>
<system.serviceModel>
<bindings>
<webHttpBinding>
<binding name="WcfService1.WebHttp" maxBufferSize="2147483647"
maxBufferPoolSize="2147483647"
maxReceivedMessageSize="2147483647"
transferMode="Streamed"
sendTimeout="00:05:00">
<readerQuotas  maxDepth="2147483647"
maxStringContentLength="2147483647"
maxArrayLength="2147483647"
maxBytesPerRead="2147483647"
maxNameTableCharCount="2147483647"/>
<security mode="None" />
</binding>
</webHttpBinding>
</bindings>
<services>
<service name="WcfService1.Service1">
<endpoint address="" behaviorConfiguration="myweb" contract="WcfService1.IService1" binding="webHttpBinding" />
<host>
<baseAddresses>
<add baseAddress="http://localhost:5031/Service1.svc" />
</baseAddresses>
</host>
</service>
</services>
<behaviors>
<endpointBehaviors>
<behavior name ="myweb">
<webHttp/>
</behavior>
</endpointBehaviors>
<serviceBehaviors>
<behavior>
<!-- To avoid disclosing metadata information, set the values below to false before deployment -->
<serviceMetadata httpGetEnabled="true" httpsGetEnabled="true"/>
<!-- To receive exception details in faults for debugging purposes, set the value below to true.  Set to false before deployment to avoid disclosing exception information -->
<serviceDebug includeExceptionDetailInFaults="true"/>
</behavior>
</serviceBehaviors>
</behaviors>
<protocolMapping>
<add binding="basicHttpBinding" scheme="http" />
<add binding="basicHttpsBinding" scheme="https" /> 
<add binding="webHttpBinding" scheme="http"/>
</protocolMapping>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />
</system.serviceModel>
<system.webServer>
<modules runAllManagedModulesForAllRequests="true"/>
<!--
To browse web app root directory during debugging, set the value below to true.
Set to false before deployment to avoid disclosing web app folder information.
-->
<directoryBrowse enabled="true"/>
<security>
<requestFiltering>
<requestLimits maxAllowedContentLength="102400000" />
</requestFiltering>
</security>
</system.webServer>
</configuration>

请让我知道,这里有什么问题以及我需要解决什么。 感谢您抽出宝贵时间查看这篇文章。谢谢

http://192.168.1.5/Service1.svc/UploadImage .

而不是 http://192.168.1.5/Wcfservice1/Service1.svc/UploadImage 希望它可能会起作用。

请您从配置文件中删除主机部分并再次尝试此 http://IP/Wcfservice1/Service1.svc/UploadImage 吗? 更新:

尝试启用服务帮助页面。 然后我们可以找到端点地址。 将此部分添加到 Tour Config:

<endpointBehaviors>
<behavior name="myweb">
<webHttp helpEnabled="true" defaultBodyStyle="Bare" defaultOutgoingResponseFormat="Json" automaticFormatSelectionEnabled="true" />
</behavior>
</endpointBehaviors>

最新更新